@thisisagile/easy 15.23.4 → 15.23.5

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.
@@ -3,5 +3,6 @@ export type TemplateOptions = {
3
3
  type?: Text;
4
4
  property?: Text;
5
5
  actual?: Text;
6
+ subject?: Text;
6
7
  };
7
8
  export declare const template: (tmpl: Text, subject: unknown, options?: TemplateOptions) => Text;
@@ -53,6 +53,7 @@ class Template {
53
53
  }
54
54
  const template = (tmpl, subject, options = {}) => new Template((0, import_Text.asString)(tmpl), subject, {
55
55
  type: (0, import_Constructor.toName)(subject),
56
+ subject: (0, import_Text.text)(JSON.stringify(subject)),
56
57
  ...options
57
58
  });
58
59
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/Template.ts"],"sourcesContent":["import { meta } from './Meta';\nimport { List, toList } from './List';\nimport { asString, text, Text, ToText } from './Text';\nimport { toName } from './Constructor';\nimport { tryTo } from './Try';\n\nexport type TemplateOptions = { type?: Text; property?: Text; actual?: Text };\n\nclass Template implements Text {\n constructor(private readonly template: string, private readonly subject: unknown = {}, private readonly options = {}) {}\n\n toString = (): string => {\n return meta(this.options)\n .entries()\n .reduce((t, [k]) => this.option(t, k), this.object())\n .replace(' ', ' ');\n };\n\n private readonly value = (subject: any, prop: string): string =>\n tryTo(() => prop.split('.'))\n .map(p => [p, p.splice(1)])\n .map(([p, ps]) => ps.reduce((t: ToText, s) => (t as any)[s], text(subject[p[0]])))\n .map(p => p.toString()).value;\n\n private readonly props = (tmpl: string, key: string, result: List<string> = toList()): string[] => {\n const i1 = tmpl.indexOf(`{${key}`);\n if (i1 < 0) {\n return result;\n }\n const i2 = tmpl.indexOf('}', i1);\n return this.props(tmpl.slice(i2 + 1), key, result.add(tmpl.substring(i1 + 1, i2)));\n };\n\n private readonly object = (): string => {\n return this.props(this.template, 'this').reduce((t: string, p) => t.replace(`{${p}}`, this.value(this.subject, p.replace('this.', ''))), this.template);\n };\n\n private readonly option = (tmpl: string, prop: string): string => {\n return this.props(tmpl, prop).reduce((t: string, p) => t.replace(`{${p}}`, this.value(this.options, p)), tmpl);\n };\n}\n\nexport const template = (tmpl: Text, subject: unknown, options: TemplateOptions = {}): Text =>\n new Template(asString(tmpl), subject, {\n type: toName(subject),\n ...options,\n });\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAqB;AACrB,kBAA6B;AAC7B,kBAA6C;AAC7C,yBAAuB;AACvB,iBAAsB;AAItB,MAAM,SAAyB;AAAA,EAC7B,YAA6BA,WAAmC,UAAmB,CAAC,GAAoB,UAAU,CAAC,GAAG;AAAzF,oBAAAA;AAAmC;AAAwC;AAAA,EAAe;AAAA,EAEvH,WAAW,MAAc;AACvB,eAAO,kBAAK,KAAK,OAAO,EACrB,QAAQ,EACR,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,OAAO,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,EACnD,QAAQ,MAAM,GAAG;AAAA,EACtB;AAAA,EAEiB,QAAQ,CAAC,SAAc,aACtC,kBAAM,MAAM,KAAK,MAAM,GAAG,CAAC,EACxB,IAAI,OAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EACzB,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAW,MAAO,EAAU,CAAC,OAAG,kBAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAChF,IAAI,OAAK,EAAE,SAAS,CAAC,EAAE;AAAA,EAEX,QAAQ,CAAC,MAAc,KAAa,aAAuB,oBAAO,MAAgB;AACjG,UAAM,KAAK,KAAK,QAAQ,IAAI,GAAG,EAAE;AACjC,QAAI,KAAK,GAAG;AACV,aAAO;AAAA,IACT;AACA,UAAM,KAAK,KAAK,QAAQ,KAAK,EAAE;AAC/B,WAAO,KAAK,MAAM,KAAK,MAAM,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;AAAA,EACnF;AAAA,EAEiB,SAAS,MAAc;AACtC,WAAO,KAAK,MAAM,KAAK,UAAU,MAAM,EAAE,OAAO,CAAC,GAAW,MAAM,EAAE,QAAQ,IAAI,CAAC,KAAK,KAAK,MAAM,KAAK,SAAS,EAAE,QAAQ,SAAS,EAAE,CAAC,CAAC,GAAG,KAAK,QAAQ;AAAA,EACxJ;AAAA,EAEiB,SAAS,CAAC,MAAc,SAAyB;AAChE,WAAO,KAAK,MAAM,MAAM,IAAI,EAAE,OAAO,CAAC,GAAW,MAAM,EAAE,QAAQ,IAAI,CAAC,KAAK,KAAK,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG,IAAI;AAAA,EAC/G;AACF;AAEO,MAAM,WAAW,CAAC,MAAY,SAAkB,UAA2B,CAAC,MACjF,IAAI,aAAS,sBAAS,IAAI,GAAG,SAAS;AAAA,EACpC,UAAM,2BAAO,OAAO;AAAA,EACpB,GAAG;AACL,CAAC;","names":["template"]}
1
+ {"version":3,"sources":["../../src/types/Template.ts"],"sourcesContent":["import { meta } from './Meta';\nimport { List, toList } from './List';\nimport { asString, text, Text, ToText } from './Text';\nimport { toName } from './Constructor';\nimport { tryTo } from './Try';\n\nexport type TemplateOptions = { type?: Text; property?: Text; actual?: Text; subject?: Text };\n\nclass Template implements Text {\n constructor(\n private readonly template: string,\n private readonly subject: unknown = {},\n private readonly options = {}\n ) {}\n\n toString = (): string => {\n return meta(this.options)\n .entries()\n .reduce((t, [k]) => this.option(t, k), this.object())\n .replace(' ', ' ');\n };\n\n private readonly value = (subject: any, prop: string): string =>\n tryTo(() => prop.split('.'))\n .map(p => [p, p.splice(1)])\n .map(([p, ps]) => ps.reduce((t: ToText, s) => (t as any)[s], text(subject[p[0]])))\n .map(p => p.toString()).value;\n\n private readonly props = (tmpl: string, key: string, result: List<string> = toList()): string[] => {\n const i1 = tmpl.indexOf(`{${key}`);\n if (i1 < 0) {\n return result;\n }\n const i2 = tmpl.indexOf('}', i1);\n return this.props(tmpl.slice(i2 + 1), key, result.add(tmpl.substring(i1 + 1, i2)));\n };\n\n private readonly object = (): string => {\n return this.props(this.template, 'this').reduce((t: string, p) => t.replace(`{${p}}`, this.value(this.subject, p.replace('this.', ''))), this.template);\n };\n\n private readonly option = (tmpl: string, prop: string): string => {\n return this.props(tmpl, prop).reduce((t: string, p) => t.replace(`{${p}}`, this.value(this.options, p)), tmpl);\n };\n}\n\nexport const template = (tmpl: Text, subject: unknown, options: TemplateOptions = {}): Text =>\n new Template(asString(tmpl), subject, {\n type: toName(subject),\n subject: text(JSON.stringify(subject)),\n ...options,\n });\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAqB;AACrB,kBAA6B;AAC7B,kBAA6C;AAC7C,yBAAuB;AACvB,iBAAsB;AAItB,MAAM,SAAyB;AAAA,EAC7B,YACmBA,WACA,UAAmB,CAAC,GACpB,UAAU,CAAC,GAC5B;AAHiB,oBAAAA;AACA;AACA;AAAA,EAChB;AAAA,EAEH,WAAW,MAAc;AACvB,eAAO,kBAAK,KAAK,OAAO,EACrB,QAAQ,EACR,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,OAAO,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,EACnD,QAAQ,MAAM,GAAG;AAAA,EACtB;AAAA,EAEiB,QAAQ,CAAC,SAAc,aACtC,kBAAM,MAAM,KAAK,MAAM,GAAG,CAAC,EACxB,IAAI,OAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EACzB,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAW,MAAO,EAAU,CAAC,OAAG,kBAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAChF,IAAI,OAAK,EAAE,SAAS,CAAC,EAAE;AAAA,EAEX,QAAQ,CAAC,MAAc,KAAa,aAAuB,oBAAO,MAAgB;AACjG,UAAM,KAAK,KAAK,QAAQ,IAAI,GAAG,EAAE;AACjC,QAAI,KAAK,GAAG;AACV,aAAO;AAAA,IACT;AACA,UAAM,KAAK,KAAK,QAAQ,KAAK,EAAE;AAC/B,WAAO,KAAK,MAAM,KAAK,MAAM,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;AAAA,EACnF;AAAA,EAEiB,SAAS,MAAc;AACtC,WAAO,KAAK,MAAM,KAAK,UAAU,MAAM,EAAE,OAAO,CAAC,GAAW,MAAM,EAAE,QAAQ,IAAI,CAAC,KAAK,KAAK,MAAM,KAAK,SAAS,EAAE,QAAQ,SAAS,EAAE,CAAC,CAAC,GAAG,KAAK,QAAQ;AAAA,EACxJ;AAAA,EAEiB,SAAS,CAAC,MAAc,SAAyB;AAChE,WAAO,KAAK,MAAM,MAAM,IAAI,EAAE,OAAO,CAAC,GAAW,MAAM,EAAE,QAAQ,IAAI,CAAC,KAAK,KAAK,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG,IAAI;AAAA,EAC/G;AACF;AAEO,MAAM,WAAW,CAAC,MAAY,SAAkB,UAA2B,CAAC,MACjF,IAAI,aAAS,sBAAS,IAAI,GAAG,SAAS;AAAA,EACpC,UAAM,2BAAO,OAAO;AAAA,EACpB,aAAS,kBAAK,KAAK,UAAU,OAAO,CAAC;AAAA,EACrC,GAAG;AACL,CAAC;","names":["template"]}
@@ -31,6 +31,7 @@ class Template {
31
31
  }
32
32
  const template = (tmpl, subject, options = {}) => new Template(asString(tmpl), subject, {
33
33
  type: toName(subject),
34
+ subject: text(JSON.stringify(subject)),
34
35
  ...options
35
36
  });
36
37
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/Template.ts"],"sourcesContent":["import { meta } from './Meta';\nimport { List, toList } from './List';\nimport { asString, text, Text, ToText } from './Text';\nimport { toName } from './Constructor';\nimport { tryTo } from './Try';\n\nexport type TemplateOptions = { type?: Text; property?: Text; actual?: Text };\n\nclass Template implements Text {\n constructor(private readonly template: string, private readonly subject: unknown = {}, private readonly options = {}) {}\n\n toString = (): string => {\n return meta(this.options)\n .entries()\n .reduce((t, [k]) => this.option(t, k), this.object())\n .replace(' ', ' ');\n };\n\n private readonly value = (subject: any, prop: string): string =>\n tryTo(() => prop.split('.'))\n .map(p => [p, p.splice(1)])\n .map(([p, ps]) => ps.reduce((t: ToText, s) => (t as any)[s], text(subject[p[0]])))\n .map(p => p.toString()).value;\n\n private readonly props = (tmpl: string, key: string, result: List<string> = toList()): string[] => {\n const i1 = tmpl.indexOf(`{${key}`);\n if (i1 < 0) {\n return result;\n }\n const i2 = tmpl.indexOf('}', i1);\n return this.props(tmpl.slice(i2 + 1), key, result.add(tmpl.substring(i1 + 1, i2)));\n };\n\n private readonly object = (): string => {\n return this.props(this.template, 'this').reduce((t: string, p) => t.replace(`{${p}}`, this.value(this.subject, p.replace('this.', ''))), this.template);\n };\n\n private readonly option = (tmpl: string, prop: string): string => {\n return this.props(tmpl, prop).reduce((t: string, p) => t.replace(`{${p}}`, this.value(this.options, p)), tmpl);\n };\n}\n\nexport const template = (tmpl: Text, subject: unknown, options: TemplateOptions = {}): Text =>\n new Template(asString(tmpl), subject, {\n type: toName(subject),\n ...options,\n });\n"],"mappings":";AAAA,SAAS,YAAY;AACrB,SAAe,cAAc;AAC7B,SAAS,UAAU,YAA0B;AAC7C,SAAS,cAAc;AACvB,SAAS,aAAa;AAItB,MAAM,SAAyB;AAAA,EAC7B,YAA6BA,WAAmC,UAAmB,CAAC,GAAoB,UAAU,CAAC,GAAG;AAAzF,oBAAAA;AAAmC;AAAwC;AAAA,EAAe;AAAA,EAEvH,WAAW,MAAc;AACvB,WAAO,KAAK,KAAK,OAAO,EACrB,QAAQ,EACR,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,OAAO,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,EACnD,QAAQ,MAAM,GAAG;AAAA,EACtB;AAAA,EAEiB,QAAQ,CAAC,SAAc,SACtC,MAAM,MAAM,KAAK,MAAM,GAAG,CAAC,EACxB,IAAI,OAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EACzB,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAW,MAAO,EAAU,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAChF,IAAI,OAAK,EAAE,SAAS,CAAC,EAAE;AAAA,EAEX,QAAQ,CAAC,MAAc,KAAa,SAAuB,OAAO,MAAgB;AACjG,UAAM,KAAK,KAAK,QAAQ,IAAI,GAAG,EAAE;AACjC,QAAI,KAAK,GAAG;AACV,aAAO;AAAA,IACT;AACA,UAAM,KAAK,KAAK,QAAQ,KAAK,EAAE;AAC/B,WAAO,KAAK,MAAM,KAAK,MAAM,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;AAAA,EACnF;AAAA,EAEiB,SAAS,MAAc;AACtC,WAAO,KAAK,MAAM,KAAK,UAAU,MAAM,EAAE,OAAO,CAAC,GAAW,MAAM,EAAE,QAAQ,IAAI,CAAC,KAAK,KAAK,MAAM,KAAK,SAAS,EAAE,QAAQ,SAAS,EAAE,CAAC,CAAC,GAAG,KAAK,QAAQ;AAAA,EACxJ;AAAA,EAEiB,SAAS,CAAC,MAAc,SAAyB;AAChE,WAAO,KAAK,MAAM,MAAM,IAAI,EAAE,OAAO,CAAC,GAAW,MAAM,EAAE,QAAQ,IAAI,CAAC,KAAK,KAAK,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG,IAAI;AAAA,EAC/G;AACF;AAEO,MAAM,WAAW,CAAC,MAAY,SAAkB,UAA2B,CAAC,MACjF,IAAI,SAAS,SAAS,IAAI,GAAG,SAAS;AAAA,EACpC,MAAM,OAAO,OAAO;AAAA,EACpB,GAAG;AACL,CAAC;","names":["template"]}
1
+ {"version":3,"sources":["../../src/types/Template.ts"],"sourcesContent":["import { meta } from './Meta';\nimport { List, toList } from './List';\nimport { asString, text, Text, ToText } from './Text';\nimport { toName } from './Constructor';\nimport { tryTo } from './Try';\n\nexport type TemplateOptions = { type?: Text; property?: Text; actual?: Text; subject?: Text };\n\nclass Template implements Text {\n constructor(\n private readonly template: string,\n private readonly subject: unknown = {},\n private readonly options = {}\n ) {}\n\n toString = (): string => {\n return meta(this.options)\n .entries()\n .reduce((t, [k]) => this.option(t, k), this.object())\n .replace(' ', ' ');\n };\n\n private readonly value = (subject: any, prop: string): string =>\n tryTo(() => prop.split('.'))\n .map(p => [p, p.splice(1)])\n .map(([p, ps]) => ps.reduce((t: ToText, s) => (t as any)[s], text(subject[p[0]])))\n .map(p => p.toString()).value;\n\n private readonly props = (tmpl: string, key: string, result: List<string> = toList()): string[] => {\n const i1 = tmpl.indexOf(`{${key}`);\n if (i1 < 0) {\n return result;\n }\n const i2 = tmpl.indexOf('}', i1);\n return this.props(tmpl.slice(i2 + 1), key, result.add(tmpl.substring(i1 + 1, i2)));\n };\n\n private readonly object = (): string => {\n return this.props(this.template, 'this').reduce((t: string, p) => t.replace(`{${p}}`, this.value(this.subject, p.replace('this.', ''))), this.template);\n };\n\n private readonly option = (tmpl: string, prop: string): string => {\n return this.props(tmpl, prop).reduce((t: string, p) => t.replace(`{${p}}`, this.value(this.options, p)), tmpl);\n };\n}\n\nexport const template = (tmpl: Text, subject: unknown, options: TemplateOptions = {}): Text =>\n new Template(asString(tmpl), subject, {\n type: toName(subject),\n subject: text(JSON.stringify(subject)),\n ...options,\n });\n"],"mappings":";AAAA,SAAS,YAAY;AACrB,SAAe,cAAc;AAC7B,SAAS,UAAU,YAA0B;AAC7C,SAAS,cAAc;AACvB,SAAS,aAAa;AAItB,MAAM,SAAyB;AAAA,EAC7B,YACmBA,WACA,UAAmB,CAAC,GACpB,UAAU,CAAC,GAC5B;AAHiB,oBAAAA;AACA;AACA;AAAA,EAChB;AAAA,EAEH,WAAW,MAAc;AACvB,WAAO,KAAK,KAAK,OAAO,EACrB,QAAQ,EACR,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,OAAO,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,EACnD,QAAQ,MAAM,GAAG;AAAA,EACtB;AAAA,EAEiB,QAAQ,CAAC,SAAc,SACtC,MAAM,MAAM,KAAK,MAAM,GAAG,CAAC,EACxB,IAAI,OAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EACzB,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAW,MAAO,EAAU,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAChF,IAAI,OAAK,EAAE,SAAS,CAAC,EAAE;AAAA,EAEX,QAAQ,CAAC,MAAc,KAAa,SAAuB,OAAO,MAAgB;AACjG,UAAM,KAAK,KAAK,QAAQ,IAAI,GAAG,EAAE;AACjC,QAAI,KAAK,GAAG;AACV,aAAO;AAAA,IACT;AACA,UAAM,KAAK,KAAK,QAAQ,KAAK,EAAE;AAC/B,WAAO,KAAK,MAAM,KAAK,MAAM,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;AAAA,EACnF;AAAA,EAEiB,SAAS,MAAc;AACtC,WAAO,KAAK,MAAM,KAAK,UAAU,MAAM,EAAE,OAAO,CAAC,GAAW,MAAM,EAAE,QAAQ,IAAI,CAAC,KAAK,KAAK,MAAM,KAAK,SAAS,EAAE,QAAQ,SAAS,EAAE,CAAC,CAAC,GAAG,KAAK,QAAQ;AAAA,EACxJ;AAAA,EAEiB,SAAS,CAAC,MAAc,SAAyB;AAChE,WAAO,KAAK,MAAM,MAAM,IAAI,EAAE,OAAO,CAAC,GAAW,MAAM,EAAE,QAAQ,IAAI,CAAC,KAAK,KAAK,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG,IAAI;AAAA,EAC/G;AACF;AAEO,MAAM,WAAW,CAAC,MAAY,SAAkB,UAA2B,CAAC,MACjF,IAAI,SAAS,SAAS,IAAI,GAAG,SAAS;AAAA,EACpC,MAAM,OAAO,OAAO;AAAA,EACpB,SAAS,KAAK,KAAK,UAAU,OAAO,CAAC;AAAA,EACrC,GAAG;AACL,CAAC;","names":["template"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "15.23.4",
3
+ "version": "15.23.5",
4
4
  "description": "Straightforward library for building domain-driven microservice architectures",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
@@ -33,7 +33,7 @@
33
33
  "access": "public"
34
34
  },
35
35
  "devDependencies": {
36
- "@thisisagile/easy-test": "15.23.4",
36
+ "@thisisagile/easy-test": "15.23.5",
37
37
  "@types/form-urlencoded": "^4.4.0",
38
38
  "@types/jsonwebtoken": "^9.0.6",
39
39
  "@types/luxon": "3.4.2",
@@ -4,10 +4,14 @@ import { asString, text, Text, ToText } from './Text';
4
4
  import { toName } from './Constructor';
5
5
  import { tryTo } from './Try';
6
6
 
7
- export type TemplateOptions = { type?: Text; property?: Text; actual?: Text };
7
+ export type TemplateOptions = { type?: Text; property?: Text; actual?: Text; subject?: Text };
8
8
 
9
9
  class Template implements Text {
10
- constructor(private readonly template: string, private readonly subject: unknown = {}, private readonly options = {}) {}
10
+ constructor(
11
+ private readonly template: string,
12
+ private readonly subject: unknown = {},
13
+ private readonly options = {}
14
+ ) {}
11
15
 
12
16
  toString = (): string => {
13
17
  return meta(this.options)
@@ -43,5 +47,6 @@ class Template implements Text {
43
47
  export const template = (tmpl: Text, subject: unknown, options: TemplateOptions = {}): Text =>
44
48
  new Template(asString(tmpl), subject, {
45
49
  type: toName(subject),
50
+ subject: text(JSON.stringify(subject)),
46
51
  ...options,
47
52
  });