@contember/schema-definition 1.3.0-alpha.2 → 1.3.0-alpha.4

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.
Files changed (42) hide show
  1. package/dist/src/actions/definition/index.d.ts +5 -0
  2. package/dist/src/actions/definition/index.d.ts.map +1 -0
  3. package/dist/src/actions/definition/index.js +26 -0
  4. package/dist/src/actions/definition/index.js.map +1 -0
  5. package/dist/src/actions/definition/internal/ActionsFactory.d.ts +11 -0
  6. package/dist/src/actions/definition/internal/ActionsFactory.d.ts.map +1 -0
  7. package/dist/src/actions/definition/internal/ActionsFactory.js +182 -0
  8. package/dist/src/actions/definition/internal/ActionsFactory.js.map +1 -0
  9. package/dist/src/actions/definition/internal/store.d.ts +11 -0
  10. package/dist/src/actions/definition/internal/store.d.ts.map +1 -0
  11. package/dist/src/actions/definition/internal/store.js +6 -0
  12. package/dist/src/actions/definition/internal/store.js.map +1 -0
  13. package/dist/src/actions/definition/targets.d.ts +10 -0
  14. package/dist/src/actions/definition/targets.d.ts.map +1 -0
  15. package/dist/src/actions/definition/targets.js +13 -0
  16. package/dist/src/actions/definition/targets.js.map +1 -0
  17. package/dist/src/actions/definition/triggers.d.ts +27 -0
  18. package/dist/src/actions/definition/triggers.d.ts.map +1 -0
  19. package/dist/src/actions/definition/triggers.js +13 -0
  20. package/dist/src/actions/definition/triggers.js.map +1 -0
  21. package/dist/src/createSchema.d.ts.map +1 -1
  22. package/dist/src/createSchema.js +3 -1
  23. package/dist/src/createSchema.js.map +1 -1
  24. package/dist/src/index.d.ts +1 -0
  25. package/dist/src/index.d.ts.map +1 -1
  26. package/dist/src/index.js +2 -1
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/tsconfig.tsbuildinfo +1 -1
  29. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  30. package/dist/tests/unit/readActions.test.d.ts +2 -0
  31. package/dist/tests/unit/readActions.test.d.ts.map +1 -0
  32. package/dist/tests/unit/readActions.test.js +78 -0
  33. package/dist/tests/unit/readActions.test.js.map +1 -0
  34. package/package.json +9 -4
  35. package/src/actions/definition/index.ts +13 -0
  36. package/src/actions/definition/internal/ActionsFactory.ts +190 -0
  37. package/src/actions/definition/internal/store.ts +8 -0
  38. package/src/actions/definition/targets.ts +15 -0
  39. package/src/actions/definition/triggers.ts +45 -0
  40. package/src/createSchema.ts +3 -1
  41. package/src/index.ts +1 -0
  42. package/tests/unit/readActions.test.ts +54 -0
@@ -0,0 +1,5 @@
1
+ import { Actions } from '@contember/schema';
2
+ export * from './triggers';
3
+ export * from './targets';
4
+ export declare const createActions: (exportedDefinitions: Record<string, any>) => Actions.Schema;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/actions/definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAG3C,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AAGzB,eAAO,MAAM,aAAa,wBACJ,OAAO,MAAM,EAAE,GAAG,CAAC,KACtC,QAAQ,MAGV,CAAA"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.createActions = void 0;
18
+ const ActionsFactory_1 = require("./internal/ActionsFactory");
19
+ __exportStar(require("./triggers"), exports);
20
+ __exportStar(require("./targets"), exports);
21
+ const createActions = (exportedDefinitions) => {
22
+ const factory = new ActionsFactory_1.ActionsFactory();
23
+ return factory.create(exportedDefinitions);
24
+ };
25
+ exports.createActions = createActions;
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/actions/definition/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,8DAA0D;AAE1D,6CAA0B;AAC1B,4CAAyB;AAGlB,MAAM,aAAa,GAAG,CAC5B,mBAAwC,EACvB,EAAE;IACnB,MAAM,OAAO,GAAG,IAAI,+BAAc,EAAE,CAAA;IACpC,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAC3C,CAAC,CAAA;AALY,QAAA,aAAa,iBAKzB"}
@@ -0,0 +1,11 @@
1
+ import { Actions } from '@contember/schema';
2
+ export declare class ActionsFactory {
3
+ constructor();
4
+ create(exportedDefinitions: Record<string, any>): Actions.Schema;
5
+ private resolveTarget;
6
+ private createWatchTrigger;
7
+ private createBasicTrigger;
8
+ private parseSelection;
9
+ private processSelectionSet;
10
+ }
11
+ //# sourceMappingURL=ActionsFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionsFactory.d.ts","sourceRoot":"","sources":["../../../../../src/actions/definition/internal/ActionsFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAM3C,qBAAa,cAAc;;IAKnB,MAAM,CACZ,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACtC,OAAO,CAAC,MAAM;IAiDjB,OAAO,CAAC,aAAa;IAiCrB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,mBAAmB;CAY3B"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActionsFactory = void 0;
4
+ const utils_1 = require("../../../utils");
5
+ const store_1 = require("./store");
6
+ const targets_1 = require("../targets");
7
+ const graphql_1 = require("graphql");
8
+ class ActionsFactory {
9
+ constructor() {
10
+ }
11
+ create(exportedDefinitions) {
12
+ var _a;
13
+ const entityLikeDefinition = (0, utils_1.filterEntityDefinition)(exportedDefinitions);
14
+ const targetsRegistry = new ActionsTargetRegistry();
15
+ for (const [exportedAs, def] of Object.entries(exportedDefinitions)) {
16
+ if (!(def instanceof targets_1.ActionsTarget)) {
17
+ continue;
18
+ }
19
+ const name = (_a = def.name) !== null && _a !== void 0 ? _a : exportedAs;
20
+ targetsRegistry.register(name, def.definition);
21
+ }
22
+ const triggersDef = entityLikeDefinition.flatMap(([, entity]) => store_1.triggersStore.get(entity).map(it => ({
23
+ ...it,
24
+ entity,
25
+ })));
26
+ const triggerNames = triggersDef.map(it => it.definition.name).filter((it) => !!it);
27
+ triggerNames.forEach((it, index, arr) => {
28
+ if (arr.indexOf(it) !== index) {
29
+ throw `Duplicate trigger name ${it}.`;
30
+ }
31
+ });
32
+ const triggers = {};
33
+ for (const { definition, entity, type } of triggersDef) {
34
+ const name = definition.name;
35
+ const target = this.resolveTarget(name, definition, targetsRegistry);
36
+ let trigger;
37
+ if (type === 'basic') {
38
+ trigger = {
39
+ target,
40
+ ...this.createBasicTrigger(name, entity.name, definition),
41
+ };
42
+ }
43
+ else if (type === 'watch') {
44
+ trigger = {
45
+ target,
46
+ ...this.createWatchTrigger(name, entity.name, definition),
47
+ };
48
+ }
49
+ else {
50
+ (0, utils_1.assertNever)(type);
51
+ }
52
+ triggers[name] = trigger;
53
+ }
54
+ return { triggers, targets: targetsRegistry.getTargets() };
55
+ }
56
+ resolveTarget(triggerName, targetDefinition, targetRegistry) {
57
+ const generatedName = `${triggerName}_target`;
58
+ if ('target' in targetDefinition) {
59
+ if (targetDefinition.target instanceof targets_1.ActionsTarget) {
60
+ const registeredName = targetRegistry.getName(targetDefinition.target.definition);
61
+ if (!registeredName) {
62
+ throw `Target of ${triggerName} trigger is not registered. Have you exported it?`;
63
+ }
64
+ return registeredName;
65
+ }
66
+ else {
67
+ const { name, ...def } = targetDefinition.target;
68
+ const resolvedName = name !== null && name !== void 0 ? name : generatedName;
69
+ targetRegistry.register(resolvedName, { name: generatedName, ...def });
70
+ return resolvedName;
71
+ }
72
+ }
73
+ else if ('webhook' in targetDefinition) {
74
+ if (typeof targetDefinition.webhook === 'string') {
75
+ targetRegistry.register(generatedName, {
76
+ name: generatedName,
77
+ type: 'webhook',
78
+ url: targetDefinition.webhook,
79
+ });
80
+ }
81
+ else {
82
+ targetRegistry.register(generatedName, {
83
+ type: 'webhook',
84
+ ...targetDefinition.webhook,
85
+ });
86
+ }
87
+ return generatedName;
88
+ }
89
+ return (0, utils_1.assertNever)(targetDefinition);
90
+ }
91
+ createWatchTrigger(name, entity, trigger) {
92
+ return {
93
+ type: 'watch',
94
+ entity,
95
+ name,
96
+ watch: this.parseSelection(trigger.watch),
97
+ selection: trigger.selection ? this.parseSelection(trigger.selection) : undefined,
98
+ };
99
+ }
100
+ createBasicTrigger(name, entity, trigger) {
101
+ var _a, _b, _c;
102
+ return {
103
+ type: 'basic',
104
+ entity,
105
+ name,
106
+ create: (_a = trigger.create) !== null && _a !== void 0 ? _a : false,
107
+ delete: (_b = trigger.delete) !== null && _b !== void 0 ? _b : false,
108
+ update: (_c = trigger.update) !== null && _c !== void 0 ? _c : false,
109
+ selection: trigger.selection ? this.parseSelection(trigger.selection) : undefined,
110
+ };
111
+ }
112
+ parseSelection(selection) {
113
+ if (typeof selection !== 'string') {
114
+ return selection;
115
+ }
116
+ const result = (0, graphql_1.parse)(`{
117
+ ${selection}
118
+ }`);
119
+ for (const def of result.definitions) {
120
+ if (def.kind === 'OperationDefinition') {
121
+ return this.processSelectionSet(def.selectionSet.selections);
122
+ }
123
+ }
124
+ throw new Error();
125
+ }
126
+ processSelectionSet(selectionSet) {
127
+ return selectionSet.map(it => {
128
+ var _a, _b, _c;
129
+ if (it.kind !== 'Field') {
130
+ throw `${it.kind} is not supported.`;
131
+ }
132
+ if (((_a = it.arguments) === null || _a === void 0 ? void 0 : _a.length) === 0 && it.selectionSet === undefined) {
133
+ return it.name.value;
134
+ }
135
+ const args = Object.fromEntries((_c = (_b = it.arguments) === null || _b === void 0 ? void 0 : _b.map(it => [it.name, parseArguments(it.value)])) !== null && _c !== void 0 ? _c : []);
136
+ return [it.name.value, args, it.selectionSet ? this.processSelectionSet(it.selectionSet.selections) : []];
137
+ });
138
+ }
139
+ }
140
+ exports.ActionsFactory = ActionsFactory;
141
+ class ActionsTargetRegistry {
142
+ constructor() {
143
+ this.targets = {};
144
+ this.targetsInverseMap = new Map();
145
+ }
146
+ register(name, target) {
147
+ if (this.targets[name]) {
148
+ throw `Duplicate trigger target name ${name}`;
149
+ }
150
+ this.targets[name] = { name, ...target };
151
+ this.targetsInverseMap.set(target, name);
152
+ }
153
+ getName(target) {
154
+ return this.targetsInverseMap.get(target);
155
+ }
156
+ getTargets() {
157
+ return this.targets;
158
+ }
159
+ }
160
+ const parseArguments = (ast) => {
161
+ switch (ast.kind) {
162
+ case graphql_1.Kind.STRING:
163
+ return ast.value;
164
+ case graphql_1.Kind.BOOLEAN:
165
+ return ast.value;
166
+ case graphql_1.Kind.FLOAT:
167
+ return parseFloat(ast.value);
168
+ case graphql_1.Kind.INT:
169
+ return Number(ast.value);
170
+ case graphql_1.Kind.LIST:
171
+ return ast.values.map(it => parseArguments(it));
172
+ case graphql_1.Kind.OBJECT:
173
+ return Object.fromEntries(ast.fields.map(it => [it.name.value, parseArguments(it.value)]));
174
+ case graphql_1.Kind.ENUM:
175
+ return ast.value;
176
+ case graphql_1.Kind.NULL:
177
+ return null;
178
+ case graphql_1.Kind.VARIABLE:
179
+ throw `Variables are not supported here.`;
180
+ }
181
+ };
182
+ //# sourceMappingURL=ActionsFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionsFactory.js","sourceRoot":"","sources":["../../../../../src/actions/definition/internal/ActionsFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { BasicTriggerDefinition, WatchTriggerDefinition } from '../triggers';
2
+ declare type StoredTrigger = {
3
+ type: 'basic';
4
+ definition: BasicTriggerDefinition;
5
+ } | {
6
+ type: 'watch';
7
+ definition: WatchTriggerDefinition;
8
+ };
9
+ export declare const triggersStore: import("../../../utils").MetadataStore<StoredTrigger[]>;
10
+ export {};
11
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../src/actions/definition/internal/store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAE5E,aAAK,aAAa,GACf;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,sBAAsB,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,sBAAsB,CAAA;CAAE,CAAA;AAExD,eAAO,MAAM,aAAa,yDAA2C,CAAA"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.triggersStore = void 0;
4
+ const utils_1 = require("../../../utils");
5
+ exports.triggersStore = (0, utils_1.createMetadataStore)([]);
6
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../../src/actions/definition/internal/store.ts"],"names":[],"mappings":";;;AAAA,0CAAoD;AAOvC,QAAA,aAAa,GAAG,IAAA,2BAAmB,EAAkB,EAAE,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { Actions } from '@contember/schema';
2
+ export declare class ActionsTarget {
3
+ readonly name: string | undefined;
4
+ readonly definition: Omit<Actions.AnyTarget, 'name'>;
5
+ constructor(name: string | undefined, definition: Omit<Actions.AnyTarget, 'name'>);
6
+ }
7
+ export declare const createTarget: ({ name, ...definition }: Actions.WebhookTarget & {
8
+ name?: string | undefined;
9
+ }) => ActionsTarget;
10
+ //# sourceMappingURL=targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../../../src/actions/definition/targets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAG3C,qBAAa,aAAa;aAER,IAAI,EAAE,MAAM,GAAG,SAAS;aACxB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;gBAD3C,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;CAG5D;AAED,eAAO,MAAM,YAAY;;mBAGuD,CAAA"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTarget = exports.ActionsTarget = void 0;
4
+ class ActionsTarget {
5
+ constructor(name, definition) {
6
+ this.name = name;
7
+ this.definition = definition;
8
+ }
9
+ }
10
+ exports.ActionsTarget = ActionsTarget;
11
+ const createTarget = ({ name, ...definition }) => new ActionsTarget(name, definition);
12
+ exports.createTarget = createTarget;
13
+ //# sourceMappingURL=targets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targets.js","sourceRoot":"","sources":["../../../../src/actions/definition/targets.ts"],"names":[],"mappings":";;;AAGA,MAAa,aAAa;IACzB,YACiB,IAAwB,EACxB,UAA2C;QAD3C,SAAI,GAAJ,IAAI,CAAoB;QACxB,eAAU,GAAV,UAAU,CAAiC;IAE5D,CAAC;CACD;AAND,sCAMC;AAEM,MAAM,YAAY,GAAG,CAAC,EAC5B,IAAI,EACJ,GAAG,UAAU,EAC0B,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AAHnE,QAAA,YAAY,gBAGuD"}
@@ -0,0 +1,27 @@
1
+ import { DecoratorFunction } from '../../utils';
2
+ import { Actions } from '@contember/schema';
3
+ import { ActionsTarget } from './targets';
4
+ export declare type TriggerWebhookDefinition = {
5
+ webhook: string | Omit<Actions.WebhookTarget, 'type'>;
6
+ };
7
+ export declare type TriggerTargetDefinition = {
8
+ target: (Omit<Actions.AnyTarget, 'name'> & {
9
+ name?: string;
10
+ }) | ActionsTarget;
11
+ };
12
+ export declare type TargetDefinition = TriggerWebhookDefinition | TriggerTargetDefinition;
13
+ export declare type BasicTriggerDefinition = {
14
+ readonly name: string;
15
+ readonly create?: boolean;
16
+ readonly delete?: boolean;
17
+ readonly update?: boolean | readonly string[];
18
+ readonly selection?: Actions.SelectionNode | string;
19
+ } & TargetDefinition;
20
+ export declare type WatchTriggerDefinition = {
21
+ readonly name: string;
22
+ readonly watch: Actions.SelectionNode | string;
23
+ readonly selection?: Actions.SelectionNode | string;
24
+ } & TargetDefinition;
25
+ export declare const trigger: <T>(definition: BasicTriggerDefinition) => DecoratorFunction<T>;
26
+ export declare const watch: <T>(definition: WatchTriggerDefinition) => DecoratorFunction<T>;
27
+ //# sourceMappingURL=triggers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../../../../src/actions/definition/triggers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAqB,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,oBAAY,wBAAwB,GAAG;IACtC,OAAO,EACJ,MAAM,GACN,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;CACtC,CAAA;AAED,oBAAY,uBAAuB,GAAG;IACrC,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,aAAa,CAAA;CAC7E,CAAA;AAED,oBAAY,gBAAgB,GACzB,wBAAwB,GACxB,uBAAuB,CAAA;AAE1B,oBAAY,sBAAsB,GAC/B;IACD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAAA;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,aAAa,GAAG,MAAM,CAAA;CACnD,GACC,gBAAgB,CAAA;AAEnB,oBAAY,sBAAsB,GAC/B;IACD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,GAAG,MAAM,CAAA;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,aAAa,GAAG,MAAM,CAAA;CACnD,GACC,gBAAgB,CAAA;AAEnB,eAAO,MAAM,OAAO,kBAAmB,sBAAsB,yBAE5D,CAAA;AAED,eAAO,MAAM,KAAK,kBAAmB,sBAAsB,yBAE1D,CAAA"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.watch = exports.trigger = void 0;
4
+ const store_1 = require("./internal/store");
5
+ const trigger = (definition) => (entity) => {
6
+ store_1.triggersStore.update(entity, it => [...it, { type: 'basic', definition }]);
7
+ };
8
+ exports.trigger = trigger;
9
+ const watch = (definition) => (entity) => {
10
+ store_1.triggersStore.update(entity, it => [...it, { type: 'watch', definition }]);
11
+ };
12
+ exports.watch = watch;
13
+ //# sourceMappingURL=triggers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triggers.js","sourceRoot":"","sources":["../../../../src/actions/definition/triggers.ts"],"names":[],"mappings":";;;AAEA,4CAAgD;AAmCzC,MAAM,OAAO,GAAG,CAAI,UAAkC,EAAwB,EAAE,CAAC,CAAC,MAA4B,EAAE,EAAE;IACxH,qBAAa,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;AAC3E,CAAC,CAAA;AAFY,QAAA,OAAO,WAEnB;AAEM,MAAM,KAAK,GAAG,CAAI,UAAkC,EAAwB,EAAE,CAAC,CAAC,MAA4B,EAAE,EAAE;IACtH,qBAAa,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;AAC3E,CAAC,CAAA;AAFY,QAAA,KAAK,SAEjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"createSchema.d.ts","sourceRoot":"","sources":["../../src/createSchema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,eAAO,MAAM,YAAY,gBAAiB,OAAO,MAAM,EAAE,GAAG,CAAC,6BAA4B,MAAM,KAAK,MAAM,kBAAG,MAM5G,CAAA"}
1
+ {"version":3,"file":"createSchema.d.ts","sourceRoot":"","sources":["../../src/createSchema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,eAAO,MAAM,YAAY,gBAAiB,OAAO,MAAM,EAAE,GAAG,CAAC,6BAA4B,MAAM,KAAK,MAAM,kBAAG,MAO5G,CAAA"}
@@ -4,12 +4,14 @@ exports.createSchema = void 0;
4
4
  const model_1 = require("./model");
5
5
  const InputValidation = require("./validation");
6
6
  const AclDefinition = require("./acl/definition");
7
+ const ActionsDefinition = require("./actions/definition");
7
8
  const schema_utils_1 = require("@contember/schema-utils");
8
9
  const createSchema = (definitions, modifyCallback) => {
9
10
  const model = model_1.SchemaDefinition.createModel(definitions);
10
11
  const validation = InputValidation.parseDefinition(definitions);
11
12
  const acl = AclDefinition.createAcl(definitions, model);
12
- const schema = { ...schema_utils_1.emptySchema, model, validation, acl };
13
+ const actions = ActionsDefinition.createActions(definitions);
14
+ const schema = { ...schema_utils_1.emptySchema, model, validation, acl, actions };
13
15
  return modifyCallback ? modifyCallback(schema) : schema;
14
16
  };
15
17
  exports.createSchema = createSchema;
@@ -1 +1 @@
1
- {"version":3,"file":"createSchema.js","sourceRoot":"","sources":["../../src/createSchema.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAC1C,gDAA+C;AAC/C,kDAAiD;AAEjD,0DAAqD;AAE9C,MAAM,YAAY,GAAG,CAAC,WAAgC,EAAE,cAA2C,EAAU,EAAE;IACrH,MAAM,KAAK,GAAG,wBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;IACvD,MAAM,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;IAC/D,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IACvD,MAAM,MAAM,GAAG,EAAE,GAAG,0BAAW,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IACzD,OAAO,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;AACxD,CAAC,CAAA;AANY,QAAA,YAAY,gBAMxB"}
1
+ {"version":3,"file":"createSchema.js","sourceRoot":"","sources":["../../src/createSchema.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAC1C,gDAA+C;AAC/C,kDAAiD;AACjD,0DAAyD;AAEzD,0DAAqD;AAE9C,MAAM,YAAY,GAAG,CAAC,WAAgC,EAAE,cAA2C,EAAU,EAAE;IACrH,MAAM,KAAK,GAAG,wBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;IACvD,MAAM,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;IAC/D,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IACvD,MAAM,OAAO,GAAG,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAG,EAAE,GAAG,0BAAW,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;IAClE,OAAO,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;AACxD,CAAC,CAAA;AAPY,QAAA,YAAY,gBAOxB"}
@@ -2,6 +2,7 @@ export { AllowAllPermissionFactory } from '@contember/schema-utils';
2
2
  export { PermissionsBuilder } from './acl/builder/PermissionsBuilder';
3
3
  export * as InputValidation from './validation';
4
4
  export * as AclDefinition from './acl/definition';
5
+ export * as ActionsDefinition from './actions/definition';
5
6
  export * from './createSchema';
6
7
  export * from './model';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,KAAK,eAAe,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,KAAK,eAAe,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,iBAAiB,MAAM,sBAAsB,CAAA;AACzD,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA"}
package/dist/src/index.js CHANGED
@@ -14,13 +14,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.AclDefinition = exports.InputValidation = exports.PermissionsBuilder = exports.AllowAllPermissionFactory = void 0;
17
+ exports.ActionsDefinition = exports.AclDefinition = exports.InputValidation = exports.PermissionsBuilder = exports.AllowAllPermissionFactory = void 0;
18
18
  var schema_utils_1 = require("@contember/schema-utils");
19
19
  Object.defineProperty(exports, "AllowAllPermissionFactory", { enumerable: true, get: function () { return schema_utils_1.AllowAllPermissionFactory; } });
20
20
  var PermissionsBuilder_1 = require("./acl/builder/PermissionsBuilder");
21
21
  Object.defineProperty(exports, "PermissionsBuilder", { enumerable: true, get: function () { return PermissionsBuilder_1.PermissionsBuilder; } });
22
22
  exports.InputValidation = require("./validation");
23
23
  exports.AclDefinition = require("./acl/definition");
24
+ exports.ActionsDefinition = require("./actions/definition");
24
25
  __exportStar(require("./createSchema"), exports);
25
26
  __exportStar(require("./model"), exports);
26
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAAmE;AAA1D,yHAAA,yBAAyB,OAAA;AAClC,uEAAqE;AAA5D,wHAAA,kBAAkB,OAAA;AAC3B,kDAA+C;AAC/C,oDAAiD;AACjD,iDAA8B;AAC9B,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAAmE;AAA1D,yHAAA,yBAAyB,OAAA;AAClC,uEAAqE;AAA5D,wHAAA,kBAAkB,OAAA;AAC3B,kDAA+C;AAC/C,oDAAiD;AACjD,4DAAyD;AACzD,iDAA8B;AAC9B,0CAAuB"}