integreat 0.8.0-alpha.86 → 0.8.0-alpha.87

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/create.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import EventEmitter = require('node:events');
3
3
  import { Dictionaries, CustomFunction, MapDefinition } from 'map-transform';
4
- import { Middleware, Transporter, Dispatch, ScheduleDef, Action, Response, ActionHandler } from './types';
4
+ import { Middleware, Transporter, Dispatch, JobDef, Action, Response, ActionHandler } from './types';
5
5
  import { ServiceDef, IdentConfig, AuthDef, Authenticator, Service } from './service/types';
6
6
  import { SchemaDef } from './schema/types';
7
7
  import { Schema } from './schema';
@@ -13,7 +13,7 @@ export interface Definitions {
13
13
  identConfig?: IdentConfig;
14
14
  queueService?: string;
15
15
  dictionaries?: Dictionaries;
16
- schedules?: ScheduleDef[];
16
+ jobs?: JobDef[];
17
17
  }
18
18
  export interface Resources {
19
19
  transporters?: Record<string, Transporter>;
@@ -32,4 +32,4 @@ export interface Instance<ResponseData = unknown> {
32
32
  close: () => Promise<Response>;
33
33
  on: (eventName: string, listener: (...args: unknown[]) => void) => EventEmitter;
34
34
  }
35
- export default function create({ services: serviceDefs, schemas: schemaDefs, mutations, auths: authDefs, identConfig, queueService, dictionaries, schedules: scheduleDefs, }: Definitions, { transporters, transformers, handlers, authenticators }: Resources, middlewareForDispatch?: Middleware[], middlewareForService?: Middleware[]): Instance;
35
+ export default function create({ services: serviceDefs, schemas: schemaDefs, mutations, auths: authDefs, identConfig, queueService, dictionaries, jobs: jobsDefs, }: Definitions, { transporters, transformers, handlers, authenticators }: Resources, middlewareForDispatch?: Middleware[], middlewareForService?: Middleware[]): Instance;
package/dist/create.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const EventEmitter = require("node:events");
4
4
  const Auth_1 = require("./service/Auth");
5
5
  const handlers_1 = require("./handlers");
6
+ const run_1 = require("./handlers/run");
6
7
  const builtIns_1 = require("./transformers/builtIns");
7
8
  const schema_1 = require("./schema");
8
9
  const service_1 = require("./service");
@@ -15,7 +16,7 @@ const close_1 = require("./close");
15
16
  const indexUtils_2 = require("./utils/indexUtils");
16
17
  const createSchedule_1 = require("./utils/createSchedule");
17
18
  const dispatchScheduled_1 = require("./dispatchScheduled");
18
- function create({ services: serviceDefs, schemas: schemaDefs, mutations, auths: authDefs, identConfig, queueService, dictionaries, schedules: scheduleDefs = [], }, { transporters, transformers, handlers, authenticators }, middlewareForDispatch = [], middlewareForService = []) {
19
+ function create({ services: serviceDefs, schemas: schemaDefs, mutations, auths: authDefs, identConfig, queueService, dictionaries, jobs: jobsDefs = [], }, { transporters, transformers, handlers, authenticators }, middlewareForDispatch = [], middlewareForService = []) {
19
20
  if (!Array.isArray(serviceDefs) || !Array.isArray(schemaDefs)) {
20
21
  throw new TypeError('Please provide Integreat with at least services and schemas');
21
22
  }
@@ -39,14 +40,15 @@ function create({ services: serviceDefs, schemas: schemaDefs, mutations, auths:
39
40
  emit: emitter.emit.bind(emitter),
40
41
  }))
41
42
  .reduce(indexUtils_2.indexById, {});
43
+ const jobs = jobsDefs.reduce((jobs, job) => typeof job.id === 'string' ? { ...jobs, [job.id]: job } : jobs, {});
42
44
  const dispatch = (0, dispatch_1.default)({
43
45
  schemas,
44
46
  services,
45
- handlers: { ...handlers_1.default, ...handlers },
47
+ handlers: { ...handlers_1.default, ...handlers, RUN: (0, run_1.default)(jobs) },
46
48
  middleware: middlewareForDispatch,
47
49
  options: { identConfig, queueService },
48
50
  });
49
- const scheduled = scheduleDefs.filter(is_1.isObject).map(createSchedule_1.default);
51
+ const scheduled = jobsDefs.filter(is_1.isObject).map(createSchedule_1.default);
50
52
  const dispatchScheduled = (0, dispatchScheduled_1.default)(dispatch, scheduled);
51
53
  return {
52
54
  services,
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ const get_1 = require("./get");
4
4
  const getAll_1 = require("./getAll");
5
5
  const getMeta_1 = require("./getMeta");
6
6
  const getIdent_1 = require("./getIdent");
7
+ const run_1 = require("./run");
7
8
  const set_1 = require("./set");
8
9
  const setMeta_1 = require("./setMeta");
9
10
  const delete_1 = require("./delete");
@@ -16,6 +17,7 @@ const handlers = {
16
17
  GET_ALL: getAll_1.default,
17
18
  GET_META: getMeta_1.default,
18
19
  GET_IDENT: getIdent_1.default,
20
+ RUN: (0, run_1.default)({}),
19
21
  SET: set_1.default,
20
22
  SET_META: setMeta_1.default,
21
23
  DELETE: delete_1.default,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":";;AAAA,+BAAuB;AACvB,qCAA8B;AAC9B,uCAAgC;AAChC,yCAAkC;AAClC,+BAAuB;AACvB,uCAAgC;AAChC,qCAA6B;AAC7B,iCAAyB;AACzB,qCAA6B;AAC7B,mCAA2B;AAC3B,uCAA+B;AAG/B,MAAM,QAAQ,GAAkC;IAC9C,GAAG,EAAH,aAAG;IACH,OAAO,EAAP,gBAAO;IACP,QAAQ,EAAR,iBAAQ;IACR,SAAS,EAAT,kBAAS;IACT,GAAG,EAAH,aAAG;IACH,QAAQ,EAAR,iBAAQ;IACR,MAAM,EAAN,gBAAM;IACN,GAAG,EAAE,gBAAM;IACX,IAAI,EAAJ,cAAI;IACJ,MAAM,EAAN,gBAAM;IACN,KAAK,EAAL,eAAK;IACL,OAAO,EAAP,iBAAO;CACR,CAAA;AAED,kBAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":";;AAAA,+BAAuB;AACvB,qCAA8B;AAC9B,uCAAgC;AAChC,yCAAkC;AAClC,+BAAyB;AACzB,+BAAuB;AACvB,uCAAgC;AAChC,qCAA6B;AAC7B,iCAAyB;AACzB,qCAA6B;AAC7B,mCAA2B;AAC3B,uCAA+B;AAG/B,MAAM,QAAQ,GAAkC;IAC9C,GAAG,EAAH,aAAG;IACH,OAAO,EAAP,gBAAO;IACP,QAAQ,EAAR,iBAAQ;IACR,SAAS,EAAT,kBAAS;IACT,GAAG,EAAE,IAAA,aAAK,EAAC,EAAE,CAAC;IACd,GAAG,EAAH,aAAG;IACH,QAAQ,EAAR,iBAAQ;IACR,MAAM,EAAN,gBAAM;IACN,GAAG,EAAE,gBAAM;IACX,IAAI,EAAJ,cAAI;IACJ,MAAM,EAAN,gBAAM;IACN,KAAK,EAAL,eAAK;IACL,OAAO,EAAP,iBAAO;CACR,CAAA;AAED,kBAAe,QAAQ,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Action, ActionHandlerResources, Payload as BasePayload, Job } from '../types';
2
+ export interface Payload extends BasePayload {
3
+ jobId?: string;
4
+ }
5
+ declare const _default: (jobs: Record<string, Job>) => (action: Action, { dispatch }: ActionHandlerResources) => Promise<Action>;
6
+ export default _default;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const createError_1 = require("../utils/createError");
4
+ const is_1 = require("../utils/is");
5
+ const isJobStep = (step) => (0, is_1.isObject)(step) && typeof step.id === 'string';
6
+ const prepareAction = (action, meta) => ({
7
+ ...action,
8
+ meta,
9
+ });
10
+ async function runAction(action, dispatch, meta) {
11
+ if (action) {
12
+ return await dispatch(prepareAction(action, meta));
13
+ }
14
+ else {
15
+ return { response: { status: 'noaction' } };
16
+ }
17
+ }
18
+ const prependResponseError = (response, message) => response?.error
19
+ ? { ...response, error: `${message}${response.error}` }
20
+ : response;
21
+ const errorMessageFromResponses = (indices, responses, ids) => indices
22
+ .map((index) => `'${ids[index]}' (${responses[index].response?.status}: ${responses[index].response?.error})`)
23
+ .join(', ');
24
+ function responseFromResponses(responses, ids) {
25
+ const errorIndices = responses
26
+ .map((response, index) => response.response?.status === 'ok' ? undefined : index)
27
+ .filter((index) => index !== undefined);
28
+ return {
29
+ response: errorIndices.length > 0
30
+ ? {
31
+ status: 'error',
32
+ error: errorMessageFromResponses(errorIndices, responses, ids),
33
+ }
34
+ : { status: 'ok' },
35
+ };
36
+ }
37
+ function getLastJobWithResponse(flow, responses) {
38
+ for (let i = flow.length - 1; i > -1; i--) {
39
+ const step = flow[i];
40
+ const ids = Array.isArray(step) ? step.map((f) => f.id) : [step.id];
41
+ if (ids.some((id) => responses[id])) {
42
+ return responseFromResponses(ids.map((id) => responses[id]), ids);
43
+ }
44
+ }
45
+ return undefined;
46
+ }
47
+ const setResponses = (source, target) => Object.entries(source).forEach(([key, value]) => {
48
+ target[key] = value;
49
+ });
50
+ async function runFlow(flow, parentId, dispatch, meta) {
51
+ if (Array.isArray(flow)) {
52
+ const responses = {};
53
+ for (const step of flow) {
54
+ if (isJobStep(step)) {
55
+ const response = await runFlow(step.action, step.id, dispatch, meta);
56
+ setResponses(response, responses);
57
+ if (response[step.id].response?.status !== 'ok') {
58
+ return responses;
59
+ }
60
+ }
61
+ else if (Array.isArray(step)) {
62
+ const ret = await Promise.all(step.map((step) => runFlow(step.action, step.id, dispatch, meta)));
63
+ ret.forEach((response) => {
64
+ setResponses(response, responses);
65
+ });
66
+ }
67
+ }
68
+ return responses;
69
+ }
70
+ else if (flow) {
71
+ return { [parentId]: await runAction(flow, dispatch, meta) };
72
+ }
73
+ return {};
74
+ }
75
+ exports.default = (jobs) => async function set(action, { dispatch }) {
76
+ const { payload: { jobId }, meta, } = action;
77
+ const job = typeof jobId === 'string' ? jobs[jobId] : undefined;
78
+ if (!job || !job.id) {
79
+ return (0, createError_1.createErrorOnAction)(action, `No job with id '${jobId}'`, 'notfound');
80
+ }
81
+ const responses = await runFlow(job.action, job.id, dispatch, meta);
82
+ if (Array.isArray(job.action)) {
83
+ const lastResponse = getLastJobWithResponse(job.action, responses);
84
+ return {
85
+ ...action,
86
+ response: prependResponseError(lastResponse?.response, `Could not finish job '${job.id}', the following steps failed: `) || { status: 'noaction' },
87
+ };
88
+ }
89
+ else {
90
+ const response = responses[job.id];
91
+ return {
92
+ ...action,
93
+ response: response.response,
94
+ };
95
+ }
96
+ };
97
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/handlers/run.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ Object.defineProperty(exports, "transformers", { enumerable: true, get: function
15
15
  var middleware_1 = require("./middleware");
16
16
  Object.defineProperty(exports, "middleware", { enumerable: true, get: function () { return middleware_1.default; } });
17
17
  exports.default = {
18
- version: '0.8.0-alpha.86',
18
+ version: '0.8.0-alpha.87',
19
19
  create: create_1.default,
20
20
  mergeDefinitions: mergeDefinitions_1.default,
21
21
  mergeResources: mergeResources_1.default,
package/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import PProgress = require('p-progress');
2
+ import { MapDefinition } from 'map-transform';
2
3
  import { EndpointOptions } from './service/endpoints/types';
3
4
  import { IdentConfig } from './service/types';
4
5
  import { Service } from './service/types';
@@ -35,12 +36,20 @@ export declare type ScheduleObject = {
35
36
  wm?: number[];
36
37
  wy?: number[];
37
38
  };
38
- export interface ScheduleDef {
39
+ export interface JobStep {
40
+ id: string;
41
+ action?: Action | (JobStep | JobStep[])[];
42
+ mutation?: MapDefinition;
43
+ }
44
+ export interface Job {
45
+ id?: string;
46
+ action: Action | (JobStep | JobStep[])[];
47
+ }
48
+ export interface JobDef extends Job {
39
49
  schedules?: ScheduleObject[];
40
50
  exceptions?: ScheduleObject[];
41
51
  cron?: string;
42
52
  human?: string;
43
- action: Action;
44
53
  }
45
54
  export interface DataFunction {
46
55
  (): Data;
@@ -1,7 +1,7 @@
1
1
  import later = require('later');
2
- import { ScheduleDef, Action } from '../types';
2
+ import { JobDef, Action } from '../types';
3
3
  export interface Schedule {
4
4
  later: later.Schedule;
5
5
  action: Action;
6
6
  }
7
- export default function createSchedule({ schedules, exceptions, cron, human, action, }: ScheduleDef): Schedule | undefined;
7
+ export default function createSchedule({ schedules, exceptions, cron, human, action, }: JobDef): Schedule | undefined;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const later = require("later");
4
+ const is_1 = require("./is");
4
5
  later.date.UTC();
5
6
  function parseSched(schedules, exceptions, cron, human) {
6
7
  if (schedules) {
@@ -15,8 +16,12 @@ function parseSched(schedules, exceptions, cron, human) {
15
16
  return null;
16
17
  }
17
18
  function createSchedule({ schedules, exceptions, cron, human, action, }) {
18
- const schedule = parseSched(schedules, exceptions, cron, human);
19
- return schedule ? { later: later.schedule(schedule), action } : undefined;
19
+ if ((0, is_1.isAction)(action)) {
20
+ const schedule = parseSched(schedules, exceptions, cron, human);
21
+ return schedule ? { later: later.schedule(schedule), action } : undefined;
22
+ }
23
+ else
24
+ return undefined;
20
25
  }
21
26
  exports.default = createSchedule;
22
27
  //# sourceMappingURL=createSchedule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createSchedule.js","sourceRoot":"","sources":["../../src/utils/createSchedule.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAG/B,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;AAOhB,SAAS,UAAU,CACjB,SAA4B,EAC5B,UAA6B,EAC7B,IAAa,EACb,KAAc;IAEd,IAAI,SAAS,EAAE;QACb,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;KACjC;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACnC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KAC9B;SAAM,IAAI,KAAK,EAAE;QAChB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAC/B;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAwB,cAAc,CAAC,EACrC,SAAS,EACT,UAAU,EACV,IAAI,EACJ,KAAK,EACL,MAAM,GACM;IACZ,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC/D,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3E,CAAC;AATD,iCASC"}
1
+ {"version":3,"file":"createSchedule.js","sourceRoot":"","sources":["../../src/utils/createSchedule.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAE/B,6BAA+B;AAE/B,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;AAOhB,SAAS,UAAU,CACjB,SAA4B,EAC5B,UAA6B,EAC7B,IAAa,EACb,KAAc;IAEd,IAAI,SAAS,EAAE;QACb,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;KACjC;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACnC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KAC9B;SAAM,IAAI,KAAK,EAAE;QAChB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAC/B;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAwB,cAAc,CAAC,EACrC,SAAS,EACT,UAAU,EACV,IAAI,EACJ,KAAK,EACL,MAAM,GACC;IACP,IAAI,IAAA,aAAQ,EAAC,MAAM,CAAC,EAAE;QACpB,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QAC/D,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;KAC1E;;QAAM,OAAO,SAAS,CAAA;AACzB,CAAC;AAXD,iCAWC"}
@@ -12,7 +12,7 @@ const mergeDefs = (defs, def) => ({
12
12
  services: mergeArrays(defs.services, def.services),
13
13
  mutations: { ...defs.mutations, ...def.mutations },
14
14
  dictionaries: { ...defs.dictionaries, ...def.dictionaries },
15
- schedules: mergeArrays(defs.schedules, def.schedules),
15
+ jobs: mergeArrays(defs.jobs, def.jobs),
16
16
  identConfig: def.identConfig || defs.identConfig,
17
17
  queueService: def.queueService || defs.queueService,
18
18
  });
@@ -23,7 +23,7 @@ function mergeDefinitions(...defs) {
23
23
  services: [],
24
24
  mutations: {},
25
25
  dictionaries: {},
26
- schedules: [],
26
+ jobs: [],
27
27
  identConfig: undefined,
28
28
  queueService: undefined,
29
29
  });
@@ -1 +1 @@
1
- {"version":3,"file":"mergeDefinitions.js","sourceRoot":"","sources":["../../src/utils/mergeDefinitions.ts"],"names":[],"mappings":";;AAEA,MAAM,aAAa,GAAG,CAAI,GAAS,EAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AAE5E,MAAM,WAAW,GAAG,CAAI,IAAU,EAAE,IAAU,EAAO,EAAE,CAAC;IACtD,GAAG,aAAa,CAAC,IAAI,CAAC;IACtB,GAAG,aAAa,CAAC,IAAI,CAAC;CACvB,CAAA;AAED,MAAM,SAAS,GAAG,CAChB,IAA0B,EAC1B,GAAyB,EACZ,EAAE,CAAC,CAAC;IACjB,GAAG,IAAI;IACP,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;IACzC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IAC/C,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;IAClD,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE;IAClD,YAAY,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE;IAC3D,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC;IACrD,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW;IAChD,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;CACpD,CAAC,CAAA;AAEF,SAAwB,gBAAgB,CACtC,GAAG,IAA4B;IAE/B,OAAO,IAAI,CAAC,MAAM,CAAc,SAAS,EAAE;QACzC,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,SAAS;KACxB,CAAC,CAAA;AACJ,CAAC;AAbD,mCAaC"}
1
+ {"version":3,"file":"mergeDefinitions.js","sourceRoot":"","sources":["../../src/utils/mergeDefinitions.ts"],"names":[],"mappings":";;AAEA,MAAM,aAAa,GAAG,CAAI,GAAS,EAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AAE5E,MAAM,WAAW,GAAG,CAAI,IAAU,EAAE,IAAU,EAAO,EAAE,CAAC;IACtD,GAAG,aAAa,CAAC,IAAI,CAAC;IACtB,GAAG,aAAa,CAAC,IAAI,CAAC;CACvB,CAAA;AAED,MAAM,SAAS,GAAG,CAChB,IAA0B,EAC1B,GAAyB,EACZ,EAAE,CAAC,CAAC;IACjB,GAAG,IAAI;IACP,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;IACzC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IAC/C,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;IAClD,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE;IAClD,YAAY,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE;IAC3D,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;IACtC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW;IAChD,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;CACpD,CAAC,CAAA;AAEF,SAAwB,gBAAgB,CACtC,GAAG,IAA4B;IAE/B,OAAO,IAAI,CAAC,MAAM,CAAc,SAAS,EAAE;QACzC,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,EAAE;QAChB,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,SAAS;KACxB,CAAC,CAAA;AACJ,CAAC;AAbD,mCAaC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "integreat",
3
- "version": "0.8.0-alpha.86",
3
+ "version": "0.8.0-alpha.87",
4
4
  "description": "Node.js integration layer",
5
5
  "author": "Kjell-Morten Bratsberg Thorsen <kjellmorten@integreat.io> (https://integreat.io/)",
6
6
  "license": "ISC",
@@ -48,7 +48,7 @@
48
48
  "later": "^1.2.0",
49
49
  "luxon": "^2.4.0",
50
50
  "map-any": "^0.2.1",
51
- "map-transform": "0.4.0-alpha.13",
51
+ "map-transform": "0.4.0-alpha.14",
52
52
  "ms": "^2.1.3",
53
53
  "nanoid": "^3.3.4",
54
54
  "p-limit": "^3.1.0",
@@ -62,7 +62,7 @@
62
62
  "@integreat/ts-dev-setup": "^2.3.0",
63
63
  "@types/sinon": "^10.0.11",
64
64
  "integreat-transporter-http": "0.1.0-alpha.25",
65
- "nock": "^13.2.6",
65
+ "nock": "^13.2.7",
66
66
  "sinon": "^14.0.0"
67
67
  }
68
68
  }