@lilaquadrat/studio 14.0.0 → 15.0.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.
@@ -66,13 +66,6 @@ const CompanyScope = {
66
66
  history: [
67
67
  'read',
68
68
  ],
69
- html: [
70
- 'app',
71
- 'storageRead',
72
- 'storageCreate',
73
- 'storageEdit',
74
- 'storageRemove',
75
- ],
76
69
  };
77
70
  const CompanyScopeAdmin = {
78
71
  app: [
@@ -260,8 +253,12 @@ const ProjectScope = {
260
253
  'history',
261
254
  'admin',
262
255
  ],
263
- html: [
264
- 'app',
256
+ designs: [
257
+ 'read',
258
+ 'create',
259
+ 'edit',
260
+ 'remove',
261
+ 'history',
265
262
  'storageRead',
266
263
  'storageCreate',
267
264
  'storageEdit',
@@ -1 +1 @@
1
- {"version":3,"file":"permissionScopes.js","sourceRoot":"","sources":["../../../src/helpers/permissionScopes.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAAgB;IAChC,OAAO,EAAE;QACP,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,MAAM;QACN,SAAS;KACV;IACD,GAAG,EAAE;QACH,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,SAAS;KACV;IACD,SAAS,EAAE;QACT,MAAM;QACN,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;QAClB,aAAa;QACb,eAAe;QACf,aAAa;QACb,eAAe;QACf,OAAO;KACR;IACD,QAAQ,EAAE;QACR,MAAM;QACN,MAAM;QACN,SAAS;KACV;IACD,WAAW,EAAE;QACX,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,SAAS;KACV;IACD,GAAG,EAAE;QACH,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;KACT;IACD,OAAO,EAAE;QACP,MAAM;QACN,QAAQ;QACR,SAAS;KACV;IACD,OAAO,EAAE;QACP,MAAM;QACN,QAAQ;QACR,MAAM;QACN,OAAO;KACR;IACD,OAAO,EAAE;QACP,MAAM;KACP;IACD,IAAI,EAAE;QACJ,KAAK;QACL,aAAa;QACb,eAAe;QACf,aAAa;QACb,eAAe;KAChB;CACF,CAAC;AAEF,MAAM,iBAAiB,GAAgB;IACrC,GAAG,EAAE;QACH,OAAO;KACR;IACD,OAAO,EAAE;QACP,OAAO;KACR;IACD,OAAO,EAAE;QACP,OAAO;KACR;IACD,OAAO,EAAE;QACP,OAAO;KACR;IACD,OAAO,EAAE;QACP,OAAO;KACR;IACD,MAAM,EAAE;QACN,OAAO;KACR;IACD,WAAW,EAAE;QACX,OAAO;KACR;IACD,OAAO,EAAE;QACP,OAAO;KACR;IACD,OAAO,EAAE;QACP,MAAM;QACN,OAAO;QACP,QAAQ;QACR,cAAc;QACd,SAAS;QACT,QAAQ;QACR,SAAS;KACV;CACF,CAAC;AAEF,MAAM,YAAY,GAAgB;IAChC,SAAS,EAAE;QACT,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;KACT;IACD,UAAU,EAAE;QACV,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;KACT;IACD,MAAM,EAAE;QACN,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;KACT;IACD,qBAAqB,EAAE;QACrB,MAAM;QACN,MAAM;KACP;IACD,gBAAgB,EAAE;QAChB,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;KACT;IACD,MAAM,EAAE;QACN,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,SAAS;QACT,IAAI;KACL;IACD,KAAK,EAAE;QACL,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,SAAS;QACT,aAAa;QACb,eAAe;QACf,aAAa;QACb,eAAe;KAChB;IACD,QAAQ,EAAE;QACR,MAAM;QACN,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,SAAS;KACV;IACD,WAAW,EAAE;QACX,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,SAAS;KACV;IACD,OAAO,EAAE;QACP,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,SAAS;KACV;IACD,gBAAgB,EAAE;QAChB,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,SAAS;KACV;IACD,OAAO,EAAE;QACP,MAAM;QACN,SAAS;QACT,UAAU;QACV,SAAS;QACT,QAAQ;QACR,eAAe;KAChB;IACD,cAAc,EAAE;QACd,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,SAAS;KACV;IACD,OAAO,EAAE;QACP,MAAM;QACN,MAAM;QACN,QAAQ;QACR,SAAS;KACV;IACD,OAAO,EAAE;QACP,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,SAAS;KACV;IACD,OAAO,EAAE;QACP,MAAM;QACN,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,SAAS;QACT,OAAO;KACR;IACD,oBAAoB,EAAE;QACpB,MAAM;QACN,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,SAAS;QACT,OAAO;QACP,UAAU;KACX;IACD,KAAK,EAAE;QACL,MAAM;QACN,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,SAAS;QACT,OAAO;KACR;IACD,iBAAiB,EAAE;QACjB,MAAM;QACN,MAAM;QACN,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,KAAK;QACL,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;QAClB,aAAa;QACb,eAAe;QACf,aAAa;QACb,eAAe;QACf,QAAQ;QACR,SAAS;QACT,OAAO;KACR;IACD,IAAI,EAAE;QACJ,KAAK;QACL,aAAa;QACb,eAAe;QACf,aAAa;QACb,eAAe;KAChB;IACD,GAAG,EAAE;QACH,MAAM;QACN,QAAQ;QACR,SAAS;KACV;IACD,OAAO,EAAE;QACP,MAAM;KACP;CACF,CAAC;AAEF,MAAM,cAAc,GAAa;IAC/B,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,UAAU;IACV,SAAS;CACV,CAAC;AAEF,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,CAAC"}
1
+ {"version":3,"file":"permissionScopes.js","sourceRoot":"","sources":["../../../src/helpers/permissionScopes.ts"],"names":[],"mappings":"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"}
@@ -1,57 +1,54 @@
1
1
  import Modelv2 from '../classes/modelv2.class.js';
2
+ const filesSchema = {
3
+ type: 'array',
4
+ items: {
5
+ type: 'object',
6
+ properties: {
7
+ prefix: { type: 'string' },
8
+ filename: { type: 'string' },
9
+ },
10
+ required: ['filename'],
11
+ additionalProperties: false,
12
+ },
13
+ };
2
14
  const model = new Modelv2('design', 'designs');
3
- model.immutable = ['company', 'project', 'target'];
15
+ model.immutable = ['company', 'project', 'id', 'target'];
16
+ /** a design is identified by its id inside one project and target */
17
+ model.historyMatch = ['company', 'project', 'target', 'id'];
18
+ // company, project and target lead the key so listing a project's designs can use it,
19
+ // id last still enforces one design per id
4
20
  model.addIndex({
5
21
  key: {
6
22
  company: 1,
7
23
  project: 1,
8
- target: 1
24
+ target: 1,
25
+ id: 1,
9
26
  },
10
27
  unique: true,
11
- name: 'unique-company-project',
28
+ name: 'unique-id-project',
12
29
  }, 1);
13
30
  model.setSchema({
14
31
  type: 'object',
15
32
  properties: {
16
33
  company: { type: 'string' },
17
34
  project: { type: 'string' },
18
- files: {
19
- type: 'array',
20
- items: {
21
- type: 'object',
22
- properties: {
23
- prefix: { type: 'string' },
24
- filename: { type: 'string' },
25
- },
26
- required: ['filename'],
27
- additionalProperties: false,
28
- },
29
- },
30
- target: {
31
- type: 'string',
32
- enum: ['app', 'server'],
33
- },
35
+ id: { type: 'string', pattern: '^([a-z0-9]{1,15})$' },
36
+ name: { type: 'string', minLength: 1 },
37
+ description: { type: 'string', maxLength: 500 },
38
+ files: filesSchema,
39
+ target: { type: 'string', enum: ['app', 'server'] },
34
40
  },
35
- required: ['company', 'project', 'files', 'target'],
41
+ required: ['company', 'project', 'id', 'name', 'files', 'target'],
36
42
  additionalProperties: false,
37
43
  }, 'create');
38
44
  model.setSchema({
39
45
  type: 'object',
40
46
  properties: {
41
- files: {
42
- type: 'array',
43
- items: {
44
- type: 'object',
45
- properties: {
46
- prefix: { type: 'string' },
47
- filename: { type: 'string' },
48
- },
49
- required: ['filename'],
50
- additionalProperties: false,
51
- },
52
- },
47
+ name: { type: 'string', minLength: 1 },
48
+ description: { type: 'string', maxLength: 500 },
49
+ files: filesSchema,
53
50
  },
54
- required: ['files'],
51
+ minProperties: 1,
55
52
  additionalProperties: false,
56
53
  }, 'change');
57
54
  export default model;
@@ -1 +1 @@
1
- {"version":3,"file":"design.model.js","sourceRoot":"","sources":["../../../src/models/design.model.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAElD,MAAM,KAAK,GAAG,IAAI,OAAO,CAAS,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEvD,KAAK,CAAC,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAEnD,KAAK,CAAC,QAAQ,CACZ;IACE,GAAG,EAAE;QACH,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;KACV;IACD,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,wBAAwB;CAC/B,EACD,CAAC,CACF,CAAC;AAEF,KAAK,CAAC,SAAS,CACb;IACE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC7B;gBACD,QAAQ,EAAE,CAAC,UAAU,CAAC;gBACtB,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;SACxB;KACF;IACD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC;IACnD,oBAAoB,EAAE,KAAK;CAC5B,EACD,QAAQ,CACT,CAAC;AAEF,KAAK,CAAC,SAAS,CACb;IACE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC7B;gBACD,QAAQ,EAAE,CAAC,UAAU,CAAC;gBACtB,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF;IACD,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,oBAAoB,EAAE,KAAK;CAC5B,EACD,QAAQ,CACT,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"design.model.js","sourceRoot":"","sources":["../../../src/models/design.model.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAElD,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC7B;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;QACtB,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAEF,MAAM,KAAK,GAAG,IAAI,OAAO,CAAS,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEvD,KAAK,CAAC,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAEzD,qEAAqE;AACrE,KAAK,CAAC,YAAY,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAE5D,sFAAsF;AACtF,2CAA2C;AAC3C,KAAK,CAAC,QAAQ,CACZ;IACE,GAAG,EAAE;QACH,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,EAAE,EAAE,CAAC;KACN;IACD,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,mBAAmB;CAC1B,EACD,CAAC,CACF,CAAC;AAEF,KAAK,CAAC,SAAS,CACb;IACE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE;QACrD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;QACtC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE;QAC/C,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;KACpD;IACD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;IACjE,oBAAoB,EAAE,KAAK;CAC5B,EACD,QAAQ,CACT,CAAC;AAEF,KAAK,CAAC,SAAS,CACb;IACE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;QACtC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE;QAC/C,KAAK,EAAE,WAAW;KACnB;IACD,aAAa,EAAE,CAAC;IAChB,oBAAoB,EAAE,KAAK;CAC5B,EACD,QAAQ,CACT,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -104,6 +104,20 @@ const loginSchema = {
104
104
  required: ['provider'],
105
105
  additionalProperties: false,
106
106
  };
107
+ /**
108
+ * a selected design is a pointer into the designs collection, so it carries the
109
+ * full (company, project, id) address of a real design document.
110
+ */
111
+ const designSchema = {
112
+ type: 'object',
113
+ properties: {
114
+ company: { type: 'string', pattern: '^([a-z0-9]{1,15})$' },
115
+ project: { type: 'string', pattern: '^([a-z0-9]{1,15})$' },
116
+ id: { type: 'string', minLength: 1 },
117
+ },
118
+ required: ['company', 'project', 'id'],
119
+ additionalProperties: false,
120
+ };
107
121
  /**
108
122
  * the project settings live flat on the project document - there is no nested
109
123
  * config object. the same fields are merged with the environment's endpoints and
@@ -136,6 +150,7 @@ const settingsProperties = {
136
150
  head: headSchema,
137
151
  login: loginSchema,
138
152
  analytics: analyticsSchema,
153
+ design: designSchema,
139
154
  };
140
155
  const model = new Modelv2('project', 'projects');
141
156
  model.removeWhenEmpty = ['description', 'aiDescription', 'aiTone', 'auth0', 'shopify', 'tags', 'features', 'payment', 'pwa', 'head', 'login', 'analytics', 'dynamic', 'installable'];
@@ -168,5 +183,29 @@ model.setSchema({
168
183
  required: ['name'],
169
184
  additionalProperties: false,
170
185
  }, 'change');
186
+ /**
187
+ * activating or deactivating an app only touches the apps array, so it validates
188
+ * against this narrow schema instead of the whole project document.
189
+ */
190
+ model.setSchema({
191
+ type: 'object',
192
+ properties: {
193
+ apps: { type: 'array' },
194
+ },
195
+ required: ['apps'],
196
+ additionalProperties: false,
197
+ }, 'apps');
198
+ /**
199
+ * selecting a design only touches the design pointer, so it validates against this
200
+ * narrow schema instead of the whole project document.
201
+ */
202
+ model.setSchema({
203
+ type: 'object',
204
+ properties: {
205
+ design: designSchema,
206
+ },
207
+ required: ['design'],
208
+ additionalProperties: false,
209
+ }, 'design');
171
210
  export default model;
172
211
  //# sourceMappingURL=project.model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.model.js","sourceRoot":"","sources":["../../../src/models/project.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.model.js","sourceRoot":"","sources":["../../../src/models/project.model.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,44 @@
1
- import { Design } from '@lilaquadrat/interfaces';
2
- import Immutable from "../Immutable.class.js";
1
+ import { Design, DesignInput, DesignListOptions, ProjectDesign } from '@lilaquadrat/interfaces';
2
+ import { ObjectId } from 'mongodb';
3
+ import Immutable from '../Immutable.class.js';
4
+ /** the caller's project: the only designs a request may reach, besides the shared library */
5
+ type Scope = {
6
+ company: string;
7
+ project: string;
8
+ };
3
9
  declare class DesignsService extends Immutable<Design> {
4
10
  model: import("../classes/modelv2.class.js").default<Design, string>;
11
+ /** the shared design catalog every project can pick from */
12
+ static readonly library: {
13
+ company: string;
14
+ project: string;
15
+ };
16
+ save(company: string, project: string, data: DesignInput, user: string, app: string): Promise<(import("mongodb").UpdateResult<import("bson").Document> & {
17
+ _id: ObjectId;
18
+ }) | import("@lilaquadrat/interfaces").CreateResult<import("@lilaquadrat/interfaces").BasicData<Design>>>;
19
+ /** a project may read its own designs and the shared library */
20
+ private accessible;
21
+ private isPermitted;
22
+ single(internalId: ObjectId, company: string, project: string): Promise<import("mongodb").WithId<Design> | null>;
23
+ /**
24
+ * resolves the design a project selects; the stored pointer is client input, so it may
25
+ * only address the caller's own project or the shared library
26
+ */
27
+ reference(design: ProjectDesign, scope: Scope): Promise<import("mongodb").WithId<Design> | null>;
28
+ /**
29
+ * lists a project's own designs plus the shared library, app target only; the files
30
+ * stay out of the response so the list stays small
31
+ */
32
+ list(options: DesignListOptions): Promise<{
33
+ data: import("mongodb").WithId<Design>[] | undefined;
34
+ all: number | undefined;
35
+ sites: import("@lilaquadrat/interfaces").DatabaseQuerySites;
36
+ count: number | undefined;
37
+ }>;
38
+ /** name and id are what a project picks a design by, description is a fallback */
39
+ private search;
40
+ /** removes one of the project's own designs, the shared library stays read only */
41
+ remove(internalId: ObjectId, company: string, project: string, user: string, app: string): Promise<import("mongodb").DeleteResult>;
5
42
  }
6
43
  declare const _default: DesignsService;
7
44
  export default _default;
@@ -1,10 +1,100 @@
1
- import Immutable from "../Immutable.class.js";
2
- import DesignModel from "../models/design.model.js";
1
+ import Immutable from '../Immutable.class.js';
2
+ import ControllerHelper from '../helpers/ControllerHelper.js';
3
+ import ImmutableError from '../classes/errors/Immutable.error.js';
4
+ import escapeRegExp from '../helpers/escapeRegExp.js';
5
+ import DesignModel from '../models/design.model.js';
3
6
  class DesignsService extends Immutable {
4
7
  constructor() {
5
8
  super(...arguments);
6
9
  this.model = DesignModel;
7
10
  }
11
+ async save(company, project, data, user, app) {
12
+ const id = data.id || 'default';
13
+ const name = data.name || id;
14
+ return this.immutableUpsert({ company, project, id, target: data.target }, {
15
+ company,
16
+ project,
17
+ id,
18
+ name,
19
+ target: data.target,
20
+ files: data.files,
21
+ ...(data.description !== undefined ? { description: data.description } : {}),
22
+ }, user, 'change', app);
23
+ }
24
+ /** a project may read its own designs and the shared library */
25
+ accessible(company, project) {
26
+ return {
27
+ $or: [
28
+ { company, project },
29
+ { company: DesignsService.library.company, project: DesignsService.library.project },
30
+ ],
31
+ };
32
+ }
33
+ isPermitted(company, project, scope) {
34
+ if (company === scope.company && project === scope.project)
35
+ return true;
36
+ return company === DesignsService.library.company && project === DesignsService.library.project;
37
+ }
38
+ single(internalId, company, project) {
39
+ return this.model.db.findOne({
40
+ _id: internalId,
41
+ ...this.accessible(company, project),
42
+ target: 'app',
43
+ });
44
+ }
45
+ /**
46
+ * resolves the design a project selects; the stored pointer is client input, so it may
47
+ * only address the caller's own project or the shared library
48
+ */
49
+ async reference(design, scope) {
50
+ if (!this.isPermitted(design.company, design.project, scope))
51
+ return null;
52
+ return this.model.db.findOne({
53
+ company: design.company,
54
+ project: design.project,
55
+ id: design.id,
56
+ target: 'app',
57
+ });
58
+ }
59
+ /**
60
+ * lists a project's own designs plus the shared library, app target only; the files
61
+ * stay out of the response so the list stays small
62
+ */
63
+ list(options) {
64
+ const search = this.search(options.search);
65
+ const query = {
66
+ $and: [
67
+ this.accessible(options.company, options.project),
68
+ ...(search ? [search] : []),
69
+ ],
70
+ target: 'app',
71
+ };
72
+ return ControllerHelper.list(query, { files: 0 }, options.site, options.limit, DesignModel, options.sort, options.order)
73
+ .then((data) => ControllerHelper.buildResponse(data, options.site || 1, options.limit));
74
+ }
75
+ /** name and id are what a project picks a design by, description is a fallback */
76
+ search(search) {
77
+ const term = search?.trim();
78
+ if (!term)
79
+ return undefined;
80
+ const pattern = new RegExp(escapeRegExp(term), 'i');
81
+ return {
82
+ $or: [
83
+ { name: pattern },
84
+ { id: pattern },
85
+ { description: pattern },
86
+ ],
87
+ };
88
+ }
89
+ /** removes one of the project's own designs, the shared library stays read only */
90
+ async remove(internalId, company, project, user, app) {
91
+ const design = await this.model.db.findOne({ _id: internalId, company, project });
92
+ if (!design?._id)
93
+ throw new ImmutableError('DESIGN_NOT_FOUND');
94
+ return this.delete(design._id, user, app);
95
+ }
8
96
  }
97
+ /** the shared design catalog every project can pick from */
98
+ DesignsService.library = { company: 'lilaquadrat', project: 'designs' };
9
99
  export default new DesignsService();
10
100
  //# sourceMappingURL=designs.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"designs.service.js","sourceRoot":"","sources":["../../../src/services/designs.service.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,uBAAuB,CAAC;AAC9C,OAAO,WAAW,MAAM,2BAA2B,CAAC;AAEpD,MAAM,cAAe,SAAQ,SAAiB;IAA9C;;QAEE,UAAK,GAAG,WAAW,CAAC;IAEtB,CAAC;CAAA;AACD,eAAe,IAAI,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"designs.service.js","sourceRoot":"","sources":["../../../src/services/designs.service.ts"],"names":[],"mappings":"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"}
@@ -588,7 +588,7 @@ export class PermissionsService extends Immutable {
588
588
  });
589
589
  }
590
590
  async filterPermissions(scope, appKeys, options) {
591
- const basicApps = ['permissions', 'settings', 'app', 'html'];
591
+ const basicApps = ['permissions', 'settings', 'app', 'designs'];
592
592
  const combinedApps = [...appKeys, ...basicApps];
593
593
  const apps = await AppModel.db.find({ id: { $in: combinedApps }, available: { $in: options.filter || ['public'] } }).toArray();
594
594
  const filteredPermissions = {};
@@ -600,6 +600,9 @@ export class PermissionsService extends Immutable {
600
600
  filteredPermissions[single] = this.getUniversalAppScope(UniversalScope, singleApp.models);
601
601
  }
602
602
  else if (basicApps.includes(single) || singleApp) {
603
+ /** a basic app may be absent from this scope type, so only expose what it grants */
604
+ if (!scope[single])
605
+ return;
603
606
  filteredPermissions[single] = scope[single];
604
607
  if (singleApp?.models) {
605
608
  singleApp.models.forEach((singleModel) => {
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.service.js","sourceRoot":"","sources":["../../../src/services/permissions.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.service.js","sourceRoot":"","sources":["../../../src/services/permissions.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,69 @@
1
+ import { describe, expect, it } from '@jest/globals';
2
+ import Models from '../src/classes/models.class.js';
3
+ import DesignModel from '../src/models/design.model.js';
4
+ const models = new Models();
5
+ models.register('design', DesignModel);
6
+ const base = {
7
+ company: 'lilaquadrat',
8
+ project: 'base',
9
+ id: 'main',
10
+ name: 'Main',
11
+ target: 'app',
12
+ };
13
+ const files = [{ filename: 'index.js' }];
14
+ describe('DesignModel', () => {
15
+ it('accepts a design with identity, name and files', () => {
16
+ expect(DesignModel.validate({ ...base, files }, 'create')).toBe(true);
17
+ });
18
+ it('accepts an optional description', () => {
19
+ expect(DesignModel.validate({ ...base, files, description: 'the main design' }, 'create')).toBe(true);
20
+ });
21
+ it('requires id, name, files and target', () => {
22
+ expect(DesignModel.validate({ ...base, files, id: undefined }, 'create')).toBe(false);
23
+ expect(DesignModel.validate({ ...base, files, name: undefined }, 'create')).toBe(false);
24
+ expect(DesignModel.validate({ ...base, files: undefined }, 'create')).toBe(false);
25
+ expect(DesignModel.validate({ ...base, target: undefined }, 'create')).toBe(false);
26
+ });
27
+ it('rejects an empty or malformed id', () => {
28
+ expect(DesignModel.validate({ ...base, files, id: '' }, 'create')).toBe(false);
29
+ expect(DesignModel.validate({ ...base, files, id: 'Main/Index' }, 'create')).toBe(false);
30
+ expect(DesignModel.validate({ ...base, files, name: '' }, 'create')).toBe(false);
31
+ });
32
+ it('rejects an unknown target', () => {
33
+ expect(DesignModel.validate({ ...base, files, target: 'edge' }, 'create')).toBe(false);
34
+ });
35
+ it('limits the description length', () => {
36
+ expect(DesignModel.validate({ ...base, files, description: 'a'.repeat(500) }, 'create')).toBe(true);
37
+ expect(DesignModel.validate({ ...base, files, description: 'a'.repeat(501) }, 'create')).toBe(false);
38
+ });
39
+ it('rejects unknown create properties', () => {
40
+ expect(DesignModel.validate({ ...base, files, generic: true }, 'create')).toBe(false);
41
+ expect(DesignModel.validate({ ...base, files, reference: { id: 'base' } }, 'create')).toBe(false);
42
+ });
43
+ it('accepts metadata and content changes', () => {
44
+ expect(DesignModel.validate({ name: 'Main 2' }, 'change')).toBe(true);
45
+ expect(DesignModel.validate({ description: 'changed' }, 'change')).toBe(true);
46
+ expect(DesignModel.validate({ files }, 'change')).toBe(true);
47
+ });
48
+ it('rejects an empty change', () => {
49
+ expect(DesignModel.validate({}, 'change')).toBe(false);
50
+ });
51
+ it('rejects identity changes', () => {
52
+ expect(DesignModel.validate({ name: 'Main 2', id: 'other' }, 'change')).toBe(false);
53
+ expect(DesignModel.validate({ name: 'Main 2', target: 'server' }, 'change')).toBe(false);
54
+ });
55
+ it('marks company, project, id and target as immutable', () => {
56
+ expect(DesignModel.immutable).toEqual(['company', 'project', 'id', 'target']);
57
+ });
58
+ it('groups history by the design identity', () => {
59
+ expect(DesignModel.historyMatch).toEqual(['company', 'project', 'target', 'id']);
60
+ });
61
+ it('defines a unique identity index', () => {
62
+ expect(DesignModel.indexes).toContainEqual(expect.objectContaining({
63
+ key: { company: 1, project: 1, target: 1, id: 1 },
64
+ unique: true,
65
+ name: 'unique-id-project-v1',
66
+ }));
67
+ });
68
+ });
69
+ //# sourceMappingURL=designModel.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designModel.spec.js","sourceRoot":"","sources":["../../tests/designModel.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,170 @@
1
+ import { afterAll, beforeAll, beforeEach, describe, expect, it, jest } from '@jest/globals';
2
+ import mongodb from 'mongo-mock';
3
+ import { ObjectId } from 'mongodb';
4
+ import Models from '../src/classes/models.class.js';
5
+ import DesignModel from '../src/models/design.model.js';
6
+ import HistoryModel from '../src/models/history.model.js';
7
+ import DesignsService from '../src/services/designs.service.js';
8
+ const models = [DesignModel, HistoryModel];
9
+ let client;
10
+ const company = 'lilaquadrat';
11
+ const project = 'base';
12
+ const files = [{ filename: 'index.js' }];
13
+ const design = (id, target = 'app') => ({ company, project, id, target });
14
+ /** a client supplied pointer is always resolved against the calling project */
15
+ const reference = (id, address = { company, project }) => DesignsService.reference({ ...address, id }, { company, project });
16
+ describe('DesignsService', () => {
17
+ beforeAll(async () => {
18
+ mongodb.max_delay = 0;
19
+ client = await mongodb.MongoClient.connect('mongodb://localhost:27017/designs-tests');
20
+ const registry = new Models();
21
+ for (const model of models)
22
+ registry.register(model.name, model);
23
+ await Promise.all(registry.injectDatabaseConnection(client, undefined, true));
24
+ for (const model of models) {
25
+ const collection = model.db;
26
+ const insertOne = collection.insertOne.bind(collection);
27
+ // mongo-mock otherwise generates IDs from its own older BSON implementation
28
+ jest.spyOn(collection, 'insertOne').mockImplementation((async (document) => {
29
+ return insertOne({ ...document, _id: document._id ?? new ObjectId() });
30
+ }));
31
+ // adapt mongo-mock's legacy driver wrapper to the production driver's document return
32
+ jest.spyOn(collection, 'findOneAndUpdate').mockImplementation((async (filter, update) => {
33
+ await collection.updateOne(filter, update);
34
+ return collection.findOne(filter);
35
+ }));
36
+ }
37
+ });
38
+ beforeEach(async () => {
39
+ for (const model of models) {
40
+ while (await model.db.countDocuments({}))
41
+ await model.db.deleteOne({});
42
+ }
43
+ });
44
+ afterAll(async () => {
45
+ await client.close(true);
46
+ });
47
+ it('creates a design with an explicit id and name', async () => {
48
+ await DesignsService.save(company, project, { id: 'main', name: 'Main', target: 'app', files }, 'user', 'studio');
49
+ const stored = await DesignModel.db.findOne(design('main'));
50
+ expect(stored?.id).toBe('main');
51
+ expect(stored?.name).toBe('Main');
52
+ expect(stored?.files).toEqual(files);
53
+ });
54
+ it('defaults id and name to "default" when omitted', async () => {
55
+ await DesignsService.save(company, project, { target: 'app', files }, 'user', 'studio');
56
+ const stored = await DesignModel.db.findOne(design('default'));
57
+ expect(stored?.id).toBe('default');
58
+ expect(stored?.name).toBe('default');
59
+ });
60
+ it('keeps two designs with different ids in the same project', async () => {
61
+ await DesignsService.save(company, project, { id: 'one', name: 'One', target: 'app', files }, 'user', 'studio');
62
+ await DesignsService.save(company, project, { id: 'two', name: 'Two', target: 'app', files }, 'user', 'studio');
63
+ const stored = await DesignModel.db.find({ company, project, target: 'app' }).toArray();
64
+ expect(stored).toHaveLength(2);
65
+ expect(stored.map((single) => single.id).sort()).toEqual(['one', 'two']);
66
+ });
67
+ it('updates the design with the same id instead of creating another', async () => {
68
+ await DesignsService.save(company, project, { id: 'main', name: 'Main', target: 'app', files }, 'user', 'studio');
69
+ await DesignsService.save(company, project, { id: 'main', name: 'Main 2', target: 'app', files }, 'user', 'studio');
70
+ const count = await DesignModel.db.countDocuments({ company, project, id: 'main', target: 'app' });
71
+ const stored = await DesignModel.db.findOne(design('main'));
72
+ expect(count).toBe(1);
73
+ expect(stored?.name).toBe('Main 2');
74
+ });
75
+ it('keeps app and server designs with the same id separate', async () => {
76
+ await DesignsService.save(company, project, { id: 'main', name: 'Main App', target: 'app', files }, 'user', 'studio');
77
+ await DesignsService.save(company, project, { id: 'main', name: 'Main Server', target: 'server', files }, 'user', 'studio');
78
+ const app = await DesignModel.db.findOne(design('main', 'app'));
79
+ const server = await DesignModel.db.findOne(design('main', 'server'));
80
+ expect(app?.name).toBe('Main App');
81
+ expect(server?.name).toBe('Main Server');
82
+ });
83
+ it('treats the description as optional', async () => {
84
+ await DesignsService.save(company, project, { id: 'without', target: 'app', files }, 'user', 'studio');
85
+ await DesignsService.save(company, project, { id: 'with', target: 'app', files, description: 'described' }, 'user', 'studio');
86
+ expect((await DesignModel.db.findOne(design('without')))?.description).toBeUndefined();
87
+ expect((await DesignModel.db.findOne(design('with')))?.description).toBe('described');
88
+ });
89
+ it('lists only the app target without files', async () => {
90
+ await DesignsService.save(company, project, { id: 'main', name: 'Main', target: 'app', files }, 'user', 'studio');
91
+ await DesignsService.save(company, project, { id: 'main', name: 'Main', target: 'server', files }, 'user', 'studio');
92
+ const list = await DesignsService.list({ company, project, site: 1, limit: 40 });
93
+ const data = list.data ?? [];
94
+ expect(list.all).toBe(1);
95
+ expect(list.count).toBe(1);
96
+ expect(data).toHaveLength(1);
97
+ expect(data[0].target).toBe('app');
98
+ expect(data[0]).not.toHaveProperty('files');
99
+ });
100
+ it('searches the design list', async () => {
101
+ await DesignsService.save(company, project, { id: 'main', name: 'Main', target: 'app', files }, 'user', 'studio');
102
+ await DesignsService.save(company, project, { id: 'other', name: 'Other', target: 'app', files }, 'user', 'studio');
103
+ const bySearch = await DesignsService.list({ company, project, search: 'missing', site: 1, limit: 40 });
104
+ expect(bySearch.data).toHaveLength(0);
105
+ const byName = await DesignsService.list({ company, project, search: 'mai', site: 1, limit: 40 });
106
+ expect(byName.data).toHaveLength(1);
107
+ });
108
+ it('treats search input as literal text', async () => {
109
+ await DesignsService.save(company, project, { id: 'main', name: 'Main', target: 'app', files }, 'user', 'studio');
110
+ const list = await DesignsService.list({ company, project, search: 'ma(', site: 1, limit: 40 });
111
+ expect(list.data).toHaveLength(0);
112
+ });
113
+ it('includes the shared library designs in a project list', async () => {
114
+ await DesignsService.save('lilaquadrat', 'designs', { id: 'base', name: 'Base', target: 'app', files }, 'user', 'studio');
115
+ await DesignsService.save(company, project, { id: 'own', name: 'Own', target: 'app', files }, 'user', 'studio');
116
+ const list = await DesignsService.list({ company, project, site: 1, limit: 40 });
117
+ const data = list.data ?? [];
118
+ expect(list.all).toBe(2);
119
+ expect(data.map((single) => single.id).sort()).toEqual(['base', 'own']);
120
+ const other = await DesignsService.list({ company: 'lilaquadrat', project: 'other', site: 1, limit: 40 });
121
+ expect((other.data ?? []).map((single) => single.id)).toEqual(['base']);
122
+ });
123
+ it('fetches a single design by internal id', async () => {
124
+ await DesignsService.save(company, project, { id: 'main', name: 'Main', target: 'app', files }, 'user', 'studio');
125
+ const stored = await DesignModel.db.findOne(design('main'));
126
+ const single = await DesignsService.single(stored._id, company, project);
127
+ expect(single?.id).toBe('main');
128
+ expect(single?.files).toEqual(files);
129
+ });
130
+ it('fetches a library design but not a foreign one', async () => {
131
+ await DesignsService.save('lilaquadrat', 'designs', { id: 'base', name: 'Base', target: 'app', files }, 'user', 'studio');
132
+ await DesignsService.save('other', 'site', { id: 'foreign', name: 'Foreign', target: 'app', files }, 'user', 'studio');
133
+ const library = await DesignModel.db.findOne({ company: 'lilaquadrat', project: 'designs' });
134
+ const foreign = await DesignModel.db.findOne({ company: 'other', project: 'site' });
135
+ expect((await DesignsService.single(library._id, company, project))?.id).toBe('base');
136
+ expect(await DesignsService.single(foreign._id, company, project)).toBeNull();
137
+ });
138
+ it('resolves a design reference to the app design', async () => {
139
+ await DesignsService.save(company, project, { id: 'main', name: 'Main', target: 'app', files }, 'user', 'studio');
140
+ await DesignsService.save('lilaquadrat', 'designs', { id: 'base', name: 'Base', target: 'app', files }, 'user', 'studio');
141
+ await DesignsService.save('other', 'site', { id: 'foreign', name: 'Foreign', target: 'app', files }, 'user', 'studio');
142
+ expect((await reference('main'))?.name).toBe('Main');
143
+ expect((await reference('base', { company: 'lilaquadrat', project: 'designs' }))?.name).toBe('Base');
144
+ expect(await reference('foreign', { company: 'other', project: 'site' })).toBeNull();
145
+ expect(await reference('missing')).toBeNull();
146
+ });
147
+ it('rejects a reference into another project of the same company', async () => {
148
+ await DesignsService.save(company, 'other', { id: 'elsewhere', name: 'Elsewhere', target: 'app', files }, 'user', 'studio');
149
+ expect(await reference('elsewhere', { company, project: 'other' })).toBeNull();
150
+ });
151
+ it('resolves a reference only to the app target', async () => {
152
+ await DesignsService.save(company, project, { id: 'main', name: 'Main', target: 'server', files }, 'user', 'studio');
153
+ expect(await reference('main')).toBeNull();
154
+ });
155
+ it('removes one of its own designs', async () => {
156
+ await DesignsService.save(company, project, { id: 'main', name: 'Main', target: 'app', files }, 'user', 'studio');
157
+ const stored = await DesignModel.db.findOne(design('main'));
158
+ await DesignsService.remove(stored._id, company, project, 'user', 'studio');
159
+ expect(await DesignModel.db.countDocuments({ company, project })).toBe(0);
160
+ expect(await HistoryModel.db.findOne({ 'history.parent': stored._id, 'history.reason': 'delete' })).not.toBeNull();
161
+ });
162
+ it('refuses to remove a design of another project', async () => {
163
+ await DesignsService.save(company, 'other', { id: 'elsewhere', name: 'Elsewhere', target: 'app', files }, 'user', 'studio');
164
+ const stored = await DesignModel.db.findOne({ company, project: 'other', id: 'elsewhere' });
165
+ await expect(DesignsService.remove(stored._id, company, project, 'user', 'studio'))
166
+ .rejects.toThrow('DESIGN_NOT_FOUND');
167
+ expect(await DesignModel.db.countDocuments({ company, project: 'other' })).toBe(1);
168
+ });
169
+ });
170
+ //# sourceMappingURL=designsService.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designsService.spec.js","sourceRoot":"","sources":["../../tests/designsService.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,83 @@
1
+ import { describe, expect, it } from '@jest/globals';
2
+ import Models from '../src/classes/models.class.js';
3
+ import ProjectModel from '../src/models/project.model.js';
4
+ const models = new Models();
5
+ models.register('project', ProjectModel);
6
+ const design = { company: 'lilaquadrat', project: 'base', id: 'main' };
7
+ describe('ProjectModel design setting', () => {
8
+ it('accepts a selected design on create', () => {
9
+ expect(ProjectModel.validate({
10
+ company: 'lilaquadrat',
11
+ id: 'base',
12
+ name: 'Base',
13
+ design,
14
+ }, 'create')).toBe(true);
15
+ });
16
+ it('accepts a selected design on change', () => {
17
+ expect(ProjectModel.validate({ name: 'Base', design }, 'change')).toBe(true);
18
+ });
19
+ it('requires an id in the selected design', () => {
20
+ expect(ProjectModel.validate({
21
+ company: 'lilaquadrat',
22
+ id: 'base',
23
+ name: 'Base',
24
+ design: { company: 'lilaquadrat', project: 'base' },
25
+ }, 'create')).toBe(false);
26
+ expect(ProjectModel.validate({
27
+ name: 'Base',
28
+ design: { company: 'lilaquadrat', project: 'base' },
29
+ }, 'change')).toBe(false);
30
+ });
31
+ it('rejects unknown selected design properties', () => {
32
+ expect(ProjectModel.validate({
33
+ name: 'Base',
34
+ design: { ...design, target: 'app' },
35
+ }, 'change')).toBe(false);
36
+ });
37
+ it('cannot be removed', () => {
38
+ expect(ProjectModel.validate({
39
+ design: {},
40
+ }, 'change')).toBe(false);
41
+ expect(ProjectModel.validate({
42
+ design: {},
43
+ }, 'design')).toBe(false);
44
+ expect(ProjectModel.removeWhenEmpty).not.toContain('design');
45
+ });
46
+ });
47
+ describe('ProjectModel design partial', () => {
48
+ it('accepts only the design pointer', () => {
49
+ expect(ProjectModel.validate({ design }, 'design')).toBe(true);
50
+ });
51
+ it('rejects additional properties', () => {
52
+ expect(ProjectModel.validate({ design, name: 'Base' }, 'design')).toBe(false);
53
+ });
54
+ it('rejects a payload without design', () => {
55
+ expect(ProjectModel.validate({ name: 'Base' }, 'design')).toBe(false);
56
+ });
57
+ it('rejects an incomplete design pointer', () => {
58
+ expect(ProjectModel.validate({
59
+ design: { company: 'lilaquadrat', project: 'base' },
60
+ }, 'design')).toBe(false);
61
+ expect(ProjectModel.validate({
62
+ design: { ...design, id: '' },
63
+ }, 'design')).toBe(false);
64
+ });
65
+ it('rejects unknown design properties', () => {
66
+ expect(ProjectModel.validate({
67
+ design: { ...design, target: 'app' },
68
+ }, 'design')).toBe(false);
69
+ });
70
+ });
71
+ describe('ProjectModel apps partial', () => {
72
+ it('accepts only the apps array', () => {
73
+ expect(ProjectModel.validate({ apps: ['designs'] }, 'apps')).toBe(true);
74
+ expect(ProjectModel.validate({ apps: [] }, 'apps')).toBe(true);
75
+ });
76
+ it('rejects additional properties', () => {
77
+ expect(ProjectModel.validate({ apps: ['designs'], name: 'Base' }, 'apps')).toBe(false);
78
+ });
79
+ it('rejects a payload without apps', () => {
80
+ expect(ProjectModel.validate({ name: 'Base' }, 'apps')).toBe(false);
81
+ });
82
+ });
83
+ //# sourceMappingURL=projectModel.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectModel.spec.js","sourceRoot":"","sources":["../../tests/projectModel.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lilaquadrat/studio",
3
- "version": "14.0.0",
3
+ "version": "15.0.0",
4
4
  "description": "classes and tools for STUDIO",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -118,7 +118,7 @@
118
118
  },
119
119
  "dependencies": {
120
120
  "@google/genai": "^1.42.0",
121
- "@lilaquadrat/interfaces": "^2.0.0",
121
+ "@lilaquadrat/interfaces": "^2.1.0",
122
122
  "@lilaquadrat/storage-sdk": "^0.1.15",
123
123
  "@nats-io/jetstream": "^3.2.0",
124
124
  "@nats-io/transport-node": "^3.2.0",