@1mill/cloudevents 4.6.3 → 5.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.
Files changed (73) hide show
  1. package/README.md +43 -108
  2. package/dist/bundle-browser/cloudevents.esm.js +2 -0
  3. package/dist/bundle-browser/cloudevents.esm.js.map +1 -0
  4. package/dist/bundle-browser/cloudevents.umd.js +2 -0
  5. package/dist/bundle-browser/cloudevents.umd.js.map +1 -0
  6. package/dist/bundle-node/cloudevents.cjs +2 -0
  7. package/dist/bundle-node/cloudevents.cjs.map +1 -0
  8. package/dist/bundle-node/cloudevents.esm.js +2 -0
  9. package/dist/bundle-node/cloudevents.esm.js.map +1 -0
  10. package/dist/index.d.ts +1 -0
  11. package/dist/tests/constructor/actor.test.d.ts +1 -0
  12. package/dist/tests/constructor/data.test.d.ts +1 -0
  13. package/dist/tests/constructor/datacontenttype.test.d.ts +1 -0
  14. package/dist/tests/constructor/dataschema.test.d.ts +1 -0
  15. package/dist/tests/constructor/id.test.d.ts +1 -0
  16. package/dist/tests/constructor/originid.test.d.ts +1 -0
  17. package/dist/tests/constructor/originsource.test.d.ts +1 -0
  18. package/dist/tests/constructor/origintime.test.d.ts +1 -0
  19. package/dist/tests/constructor/origintype.test.d.ts +1 -0
  20. package/dist/tests/constructor/source.test.d.ts +1 -0
  21. package/dist/tests/constructor/specversion.test.d.ts +1 -0
  22. package/dist/tests/constructor/subjest.test.d.ts +1 -0
  23. package/dist/tests/constructor/time.test.d.ts +1 -0
  24. package/dist/tests/constructor/type.test.d.ts +1 -0
  25. package/dist/tests/constructor/wschannelid.test.d.ts +1 -0
  26. package/dist/utils/cloudevent.d.ts +30 -0
  27. package/dist/utils/cloudevent.test.d.ts +1 -0
  28. package/dist/utils/fetchNodeEnv.d.ts +1 -0
  29. package/dist/utils/fetchNodeEnv.test.d.ts +1 -0
  30. package/dist/utils/validateAttribute.d.ts +13 -0
  31. package/dist/utils/validateAttribute.test.d.ts +1 -0
  32. package/package.json +32 -16
  33. package/CHANGELOG.md +0 -70
  34. package/dist/index.cjs +0 -2
  35. package/dist/index.cjs.map +0 -1
  36. package/dist/index.modern.js +0 -2
  37. package/dist/index.modern.js.map +0 -1
  38. package/dist/index.module.js +0 -2
  39. package/dist/index.module.js.map +0 -1
  40. package/dist/index.umd.js +0 -2
  41. package/dist/index.umd.js.map +0 -1
  42. package/src/index.js +0 -197
  43. package/src/tests/constructor/data.test.js +0 -29
  44. package/src/tests/constructor/datacontenttype.test.js +0 -77
  45. package/src/tests/constructor/dataschema.test.js +0 -39
  46. package/src/tests/constructor/id.test.js +0 -45
  47. package/src/tests/constructor/originactor.test.js +0 -39
  48. package/src/tests/constructor/originatorid.test.js +0 -39
  49. package/src/tests/constructor/originid.test.js +0 -40
  50. package/src/tests/constructor/originsource.test.js +0 -40
  51. package/src/tests/constructor/origintime.test.js +0 -39
  52. package/src/tests/constructor/origintype.test.js +0 -40
  53. package/src/tests/constructor/source.test.js +0 -63
  54. package/src/tests/constructor/specversion.test.js +0 -41
  55. package/src/tests/constructor/subjest.test.js +0 -39
  56. package/src/tests/constructor/time.test.js +0 -36
  57. package/src/tests/constructor/type.test.js +0 -39
  58. package/src/tests/constructor/wschannelid.test.js +0 -39
  59. package/src/tests/methods/origin/originactor.test.js +0 -74
  60. package/src/tests/methods/origin/originid.test.js +0 -85
  61. package/src/tests/methods/origin/originsource.test.js +0 -85
  62. package/src/tests/methods/origin/origintime.test.js +0 -85
  63. package/src/tests/methods/origin/origintype.test.js +0 -85
  64. package/src/tests/methods/origin/unit.test.js +0 -13
  65. package/src/tests/methods/originator/originatorid.test.js +0 -51
  66. package/src/tests/methods/originator/unit.test.js +0 -10
  67. package/src/tests/methods/wschannel/unit.test.js +0 -10
  68. package/src/tests/methods/wschannel/wschannelid.test.js +0 -51
  69. package/src/unit.test.js +0 -91
  70. package/src/utils/fetchNodeEnv/index.js +0 -4
  71. package/src/utils/fetchNodeEnv/unit.test.js +0 -55
  72. package/src/utils/setAttribute/index.js +0 -10
  73. package/src/utils/setAttribute/unit.test.js +0 -67
package/README.md CHANGED
@@ -7,7 +7,7 @@ This is an implementation and extention of the [CloudEvents v1 specification](ht
7
7
  ## Install
8
8
 
9
9
  ```html
10
- <script src="https://unpkg.com/@1mill/cloudevents@4/dist/index.umd.js">
10
+ <script src="https://unpkg.com/@1mill/cloudevents@5/dist/index.umd.js">
11
11
  ```
12
12
 
13
13
  or
@@ -17,147 +17,82 @@ npm install @1mill/cloudevents
17
17
  ```
18
18
 
19
19
  ```node
20
- const { Cloudevent } = require('@1mill/cloudevents') // CommonJs
20
+ // const { Cloudevent } = require('@1mill/cloudevents') // CommonJs
21
21
  import { Cloudevent } from '@1mill/cloudevents' // EMS
22
22
 
23
23
  const cloudevent = new Cloudevent({
24
- data: JSON.stringify({ some: 'payload' }),
24
+ data: { some: 'payload' },
25
25
  source: 'https://github.com/1mill/cloudevents',
26
26
  type: 'cmd.do-this-command.v0',
27
- originactor: 'user:admin#id=1234',
28
27
  })
29
28
 
30
29
  console.log(cloudevent)
31
30
  // {
32
- // id: 'v76ZvDVhbcCwD5M_NQ1FS',
33
- // source: 'https://github.com/1mill/cloudevents',
34
- // type: 'cmd.do-this-command.v0',
35
- // specversion: '1.0',
36
- // time: '2022-09-22T01:44:31.717Z',
31
+ // actor: undefined,
37
32
  // data: '{"some":"payload"}',
38
33
  // datacontenttype: 'application/json',
39
34
  // dataschema: undefined,
40
- // subject: undefined,
41
- // originactor: 'user:admin#id=1234',
42
- // originid: 'v76ZvDVhbcCwD5M_NQ1FS',
35
+ // id: 'SfDtqf84tpH13M6KTInWV',
36
+ // originid: 'SfDtqf84tpH13M6KTInWV',
43
37
  // originsource: 'https://github.com/1mill/cloudevents',
44
- // origintime: '2022-09-22T01:44:31.717Z',
38
+ // origintime: '2024-09-07T20:54:12.443Z',
45
39
  // origintype: 'cmd.do-this-command.v0',
46
- // originatorid: undefined,
47
- // wschannelid: undefined
40
+ // source: 'https://github.com/1mill/cloudevents',
41
+ // specversion: '1.0',
42
+ // subject: undefined,
43
+ // time: '2024-09-07T20:54:12.443Z',
44
+ // type: 'cmd.do-this-command.v0',
45
+ // wschannelid: undefined,
48
46
  // }
49
47
 
50
48
  const enrichedCloudevent = new Cloudevent({
51
- data: JSON.stringify({ new: 'payload', value: true }),
49
+ actor: 'user#1234',
50
+ data: { new: 'payload', value: true },
51
+ origin: cloudevent,
52
52
  source: 'https://www.erikekberg.com/',
53
+ subject: 'project#4321',
53
54
  type: 'fct.this-thing-happened.v0',
55
+ wschannelid: 'some-prefix:my-resource-name#id=12345',
54
56
  })
55
- .origin({ cloudevent })
56
- .wschannel({ wschannelid: 'some-prefix:my-resource-name#id=12345' })
57
57
 
58
58
  console.log(enrichedCloudevent)
59
59
  // {
60
- // id: '-RIl1_Dr_uNh6Q4Oa3Ifq',
61
- // source: 'https://www.erikekberg.com/',
62
- // type: 'fct.this-thing-happened.v0',
63
- // specversion: '1.0',
64
- // time: '2022-09-22T01:44:31.747Z',
60
+ // actor: 'user#1234',
65
61
  // data: '{"new":"payload","value":true}',
66
62
  // datacontenttype: 'application/json',
67
63
  // dataschema: undefined,
68
- // subject: undefined,
69
- // originactor: 'user:admin#id=1234',
70
- // originid: 'v76ZvDVhbcCwD5M_NQ1FS',
64
+ // id: 'CapjTVlPqutsGk--fAKVz',
65
+ // originid: 'SfDtqf84tpH13M6KTInWV',
71
66
  // originsource: 'https://github.com/1mill/cloudevents',
72
- // origintime: '2022-09-22T01:44:31.717Z',
67
+ // origintime: '2024-09-07T20:54:12.443Z',
73
68
  // origintype: 'cmd.do-this-command.v0',
74
- // originatorid: undefined,
75
- // wschannelid: 'some-prefix:my-resource-name#id=12345'
69
+ // source: 'https://www.erikekberg.com/',
70
+ // specversion: '1.0',
71
+ // subject: 'project#4321',
72
+ // time: '2024-09-07T20:54:12.447Z',
73
+ // type: 'fct.this-thing-happened.v0',
74
+ // wschannelid: 'some-prefix:my-resource-name#id=12345',
76
75
  // }
77
76
  ```
78
77
 
79
- | Attribute | Required | Type | Default | Notes |
80
- |----------------- |---------- |-------- |------------------------------------- |------------------------------------------------------------------------------------------ |
81
- | data | | Any | | |
82
- | datacontenttype | | String | | If "data" is present, defaults to "application/json" unless specified otherwise |
83
- | dataschema | | String | | |
84
- | source | yes | String | process.env.MILL_CLOUDEVENTS_SOURCE | Recommended to use universal identifier (e.g. <https://my-domain.com/my/feature/path/123>)|
85
- | specversion | | String | 1.0 | Cloudevent specification version |
86
- | subject | | String | | |
87
- | type | yes | String | | |
88
- | originactor | | String | | |
89
- | originid | | String | "id" property | "id" property is internally generated as part of the package |
90
- | originsource | | String | "source" property | |
91
- | origintime | | String | "time" property | "time" property is internally generated as part of the package |
92
- | origintype | | String | "type" property | |
93
- | originatorid | | String | | Deprecated in favor of "originactor" |
94
- | wschannelid | | String | | |
95
-
96
- ### origin
97
-
98
- Add `origin` attributes to a Cloudevent manually
99
-
100
- ```node
101
- const cloudevent = new Cloudevent({
102
- source: 'my-source',
103
- type: 'my-type',
104
- })
105
- .origin({
106
- originactor: 'my-origin-actor',
107
- originid: 'my-origin-id',
108
- originsource: 'my-origin-source',
109
- origintime: 'my-origin-time',
110
- origintype: 'my-origin-type',
111
- })
112
- ```
113
-
114
- or populate them automatically by passing in an existing Cloudevent
115
-
116
- ```node
117
- const originCloudevent = new Cloudevent({
118
- source: 'my-origin-cloudevent',
119
- type: 'cmd.say-hello.v0',
120
- originactor: 'my-origin-actor',
121
- })
122
-
123
- const cloudevent = new Cloudevent({
124
- data: JSON.stringify({ message: 'Hello world!' }),
125
- source: 'my-enrichment-service',
126
- type: 'fct.said-hello.v0',
127
- }).origin({ cloudevent: originCloudevent })
128
- ```
129
-
130
- ### wschannel
131
-
132
- Add `wschannel` attributes to a Cloudevent manually
133
-
134
- ```node
135
- const cloudevent = new Cloudevent({
136
- source: 'my-source',
137
- type: 'my-type',
138
- })
139
- .wschannel({ wschannelid: 'my-unique-channel-name })
140
- ```
141
-
142
- or populate them automatically by passing in an existing Cloudevent
143
-
144
- ```node
145
- const originCloudevent = new Cloudevent({
146
- source: 'my-origin-cloudevent',
147
- type: 'cmd.say-hello.v0'
148
- })
149
- .wschannel({ wschannelid: 'my-unique-channel-name })
150
-
151
- const cloudevent = new Cloudevent({
152
- data: JSON.stringify({ message: 'Hello world!' }),
153
- source: 'my-enrichment-service',
154
- type: 'fct.said-hello.v0',
155
- }).wschannel({ cloudevent: originCloudevent })
156
- ```
78
+ ## Props
79
+
80
+ | Props | Required | Type | Default | Notes |
81
+ |----------------- |---------- |------------ |-------------------------------------- |-------------------------------------------------------------------------------------------- |
82
+ | actor | | String | | |
83
+ | data | | Any | | |
84
+ | datacontenttype | | String | | If `data` is present, then defaults to `"application/json"` unless otherwise specified |
85
+ | dataschema | | String | | |
86
+ | origin | | Cloudevent | | Helper to set `originid`, `originsource`, `origintype`, and `origintime` attributes |
87
+ | source | yes | String | `process.env.MILL_CLOUDEVENTS_SOURCE` | Recommended to use universal identifiers (e.g. <https://my-domain.com/my/feature/path/123>) |
88
+ | specversion | | String | `1.0` | Cloudevent specification version |
89
+ | subject | | String | | |
90
+ | type | yes | String | | |
91
+ | wschannelid | | String | | |
157
92
 
158
93
  ## Release new version
159
94
 
160
- 1. Create `.env` and add NPM_TOKEN=...
95
+ 1. Create `.env` and add `NPM_TOKEN=...`
161
96
  2. Run `docker compose run node`
162
97
  3. In the container, run `npm version <major|minor|patch>`
163
98
  4. In the container, run `npm run deploy`
@@ -0,0 +1,2 @@
1
+ var t;!function(t){t.NUMBER="number",t.STRING="string",t.UNDEFINED="undefined"}(t||(t={}));const e=({deprecated:t=!1,name:e,permitted:i=[],value:n})=>{if(t&&console.warn(`Cloudevent "${e}" is depricated`),i.length>=1&&!i.includes(typeof n)){const t=`Cloudevent "${e}" must be of type ${i.map(t=>t.toUpperCase()).sort().join(" or ")}.`;throw new Error(t)}return n},i=(t,e)=>{if("undefined"!=typeof process)return process.env[t]||e};class n{constructor({actor:n,data:o,datacontenttype:s,dataschema:a,origin:r,source:d,specversion:c,subject:u,type:l,wschannelid:m}){var p,h,v,N;this.data=void 0,this.datacontenttype=void 0,this.dataschema=void 0,this.id=void 0,this.source=void 0,this.specversion=void 0,this.subject=void 0,this.time=void 0,this.type=void 0,this.actor=void 0,this.wschannelid=void 0,this.originid=void 0,this.originsource=void 0,this.origintime=void 0,this.origintype=void 0;const I=((t=21)=>{let e="",i=crypto.getRandomValues(new Uint8Array(t));for(;t--;)e+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&i[t]];return e})(i("MILL_CLOUDEVENTS_NANOID_LENGTH",21));this.id=e({name:"id",permitted:[t.STRING],value:I});const g=null!=d?d:i("MILL_CLOUDEVENTS_SOURCE");this.source=e({name:"source",permitted:[t.STRING],value:g}),this.type=e({name:"type",permitted:[t.STRING],value:l}),this.specversion=e({name:"specversion",permitted:[t.STRING],value:null!=c?c:"1.0"});const S=(new Date).toISOString();this.time=e({name:"time",permitted:[t.STRING],value:S});const E=void 0===s?JSON.stringify(o):o;this.data=e({name:"data",value:E}),this.datacontenttype=e({name:"datacontenttype",permitted:[t.STRING,t.UNDEFINED],value:this.data?null!=s?s:"application/json":s}),this.dataschema=e({name:"dataschema",permitted:[t.STRING,t.UNDEFINED],value:a}),this.subject=e({name:"subject",permitted:[t.STRING,t.UNDEFINED],value:u}),this.actor=e({name:"actor",permitted:[t.STRING,t.UNDEFINED],value:n}),this.wschannelid=e({name:"wschannelid",permitted:[t.STRING,t.UNDEFINED],value:m});const y=null!=(p=null==r?void 0:r.originid)?p:this.id;this.originid=e({name:"originid",permitted:[t.STRING],value:y});const R=null!=(h=null==r?void 0:r.originsource)?h:this.source;this.originsource=e({name:"originsource",permitted:[t.STRING],value:R});const T=null!=(v=null==r?void 0:r.origintime)?v:this.time;this.origintime=e({name:"origintime",permitted:[t.STRING],value:T});const D=null!=(N=null==r?void 0:r.origintype)?N:this.type;this.origintype=e({name:"origintype",permitted:[t.STRING],value:D})}}export{n as Cloudevent};
2
+ //# sourceMappingURL=cloudevents.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudevents.esm.js","sources":["../../src/utils/validateAttribute.ts","../../src/utils/fetchNodeEnv.ts","../../src/utils/cloudevent.ts","../../node_modules/nanoid/index.browser.js","../../node_modules/nanoid/url-alphabet/index.js"],"sourcesContent":["export enum Permitted {\r\n\tNUMBER = 'number',\r\n\tSTRING = 'string',\r\n\tUNDEFINED = 'undefined',\r\n}\r\n\r\ninterface ValidateAttributeProps {\r\n\tdeprecated?: boolean\r\n\tname: string\r\n\tpermitted?: Permitted[]\r\n\tvalue: any\r\n}\r\n\r\nexport const validateAttribute = ({ deprecated = false, name, permitted = [], value }: ValidateAttributeProps) => {\r\n\tif (deprecated) { console.warn(`Cloudevent \"${name}\" is depricated`) }\r\n\r\n\tif (permitted.length >= 1 && !permitted.includes(typeof value as any)) {\r\n\t\tconst message = `Cloudevent \"${name}\" must be of type ${permitted.map(s => s.toUpperCase()).sort().join(' or ')}.`\r\n\t\tthrow new Error(message)\r\n\t}\r\n\r\n\treturn value\r\n}\r\n","export const fetchNodeEnv = (name: string, fallbackValue?: any) => {\r\n\tif (typeof process === 'undefined') { return }\r\n\treturn process.env[name] || fallbackValue\r\n}\r\n","import { Permitted, validateAttribute } from './validateAttribute.js'\r\nimport { fetchNodeEnv } from './fetchNodeEnv.js'\r\nimport { nanoid } from 'nanoid'\r\n\r\nexport interface CloudeventProps {\r\n\t// * Cloudevent v1 props\r\n\tdata?: Cloudevent['data']\r\n\tdatacontenttype?: Cloudevent['datacontenttype']\r\n\tdataschema?: Cloudevent['dataschema']\r\n\tsource?: Cloudevent['source']\r\n\tspecversion?: Cloudevent['specversion']\r\n\tsubject?: Cloudevent['subject']\r\n\ttype: Cloudevent['type']\r\n\r\n\t// * In-house extension props\r\n\tactor?: Cloudevent['actor']\r\n\twschannelid?: Cloudevent['wschannelid']\r\n\r\n\t// * In-house helpers\r\n\torigin?: Cloudevent\r\n}\r\n\r\nexport class Cloudevent {\r\n\t// * Cloudevents v1 fields\r\n\treadonly data?: any\r\n\treadonly datacontenttype?: string\r\n\treadonly dataschema?: string\r\n\treadonly id: string\r\n\treadonly source: string\r\n\treadonly specversion: string\r\n\treadonly subject?: string\r\n\treadonly time: string\r\n\treadonly type: string\r\n\r\n\t// * In-house extensions\r\n\treadonly actor?: string\r\n\treadonly wschannelid?: string\r\n\r\n\t// * In-house origin extensions\r\n\treadonly originid: Cloudevent['id']\r\n\treadonly originsource: Cloudevent['source']\r\n\treadonly origintime: Cloudevent['time']\r\n\treadonly origintype: Cloudevent['type']\r\n\r\n\tconstructor({\r\n\t\tactor,\r\n\t\tdata,\r\n\t\tdatacontenttype,\r\n\t\tdataschema,\r\n\t\torigin,\r\n\t\tsource,\r\n\t\tspecversion,\r\n\t\tsubject,\r\n\t\ttype,\r\n\t\twschannelid,\r\n\t}: CloudeventProps) {\r\n\t\t// *******\r\n\t\t// * Required fields by Cloudevent v1 specification\r\n\t\tconst idValue = nanoid(fetchNodeEnv('MILL_CLOUDEVENTS_NANOID_LENGTH', 21))\r\n\t\tthis.id = validateAttribute({\r\n\t\t\tname: 'id',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: idValue\r\n\t\t})\r\n\r\n\t\tconst sourceValue = source ?? fetchNodeEnv('MILL_CLOUDEVENTS_SOURCE')\r\n\t\tthis.source = validateAttribute({\r\n\t\t\tname: 'source',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: sourceValue\r\n\t\t})\r\n\r\n\t\tthis.type = validateAttribute({\r\n\t\t\tname: 'type',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: type\r\n\t\t})\r\n\r\n\t\tconst specversionValue = specversion ?? '1.0'\r\n\t\tthis.specversion = validateAttribute({\r\n\t\t\tname: 'specversion',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: specversionValue\r\n\t\t})\r\n\r\n\t\tconst timeValue = new Date().toISOString()\r\n\t\tthis.time = validateAttribute({\r\n\t\t\tname: 'time',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: timeValue\r\n\t\t})\r\n\t\t// *******\r\n\r\n\t\t// *******\r\n\t\t// * Optional fields by Cloudevent v1 specification\r\n\t\tconst dataValue = datacontenttype === undefined ? JSON.stringify(data) : data\r\n\t\tthis.data = validateAttribute({\r\n\t\t\tname: 'data',\r\n\t\t\tvalue: dataValue\r\n\t\t})\r\n\r\n\t\tconst datacontenttypeValue = this.data\r\n\t\t\t? datacontenttype ?? 'application/json'\r\n\t\t\t: datacontenttype\r\n\t\tthis.datacontenttype = validateAttribute({\r\n\t\t\tname: 'datacontenttype',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: datacontenttypeValue\r\n\t\t})\r\n\r\n\t\tthis.dataschema = validateAttribute({\r\n\t\t\tname: 'dataschema',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: dataschema\r\n\t\t})\r\n\r\n\t\tthis.subject = validateAttribute({\r\n\t\t\tname: 'subject',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: subject\r\n\t\t})\r\n\t\t// *******\r\n\r\n\t\t// *******\r\n\t\t// * Optional in-house extentions\r\n\t\tthis.actor = validateAttribute({\r\n\t\t\tname: 'actor',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: actor,\r\n\t\t})\r\n\r\n\t\tthis.wschannelid = validateAttribute({\r\n\t\t\tname: 'wschannelid',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: wschannelid,\r\n\t\t})\r\n\t\t// *******\r\n\r\n\t\t// *******\r\n\t\t// * Origin in-house extentions\r\n\t\tconst originidValue = origin?.originid ?? this.id\r\n\t\tthis.originid = validateAttribute({\r\n\t\t\tname: 'originid',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: originidValue,\r\n\t\t})\r\n\r\n\t\tconst originsourceValue = origin?.originsource ?? this.source\r\n\t\tthis.originsource = validateAttribute({\r\n\t\t\tname: 'originsource',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: originsourceValue,\r\n\t\t})\r\n\r\n\t\tconst origintimeValue = origin?.origintime ?? this.time\r\n\t\tthis.origintime = validateAttribute({\r\n\t\t\tname: 'origintime',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: origintimeValue,\r\n\t\t})\r\n\r\n\t\tconst origintypeValue = origin?.origintype ?? this.type\r\n\t\tthis.origintype = validateAttribute({\r\n\t\t\tname: 'origintype',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: origintypeValue,\r\n\t\t})\r\n\t\t// *******\r\n\t}\r\n}\r\n","import { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n"],"names":["Permitted","validateAttribute","deprecated","name","permitted","value","console","warn","length","includes","message","map","s","toUpperCase","sort","join","Error","fetchNodeEnv","fallbackValue","process","env","Cloudevent","constructor","actor","data","datacontenttype","dataschema","origin","source","specversion","subject","type","wschannelid","this","id","time","originid","originsource","origintime","origintype","idValue","size","bytes","crypto","getRandomValues","Uint8Array","nanoid","STRING","sourceValue","timeValue","Date","toISOString","dataValue","undefined","JSON","stringify","UNDEFINED","originidValue","_origin$originid","originsourceValue","_origin$originsource","origintimeValue","_origin$origintime","origintypeValue","_origin$origintype"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ !function(e,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i((e||self).cloudevents={})}(this,function(e){var i;!function(e){e.NUMBER="number",e.STRING="string",e.UNDEFINED="undefined"}(i||(i={}));var t=function(e){var i=e.deprecated,t=e.name,n=e.permitted,o=void 0===n?[]:n,a=e.value;if(void 0!==i&&i&&console.warn('Cloudevent "'+t+'" is depricated'),o.length>=1&&!o.includes(typeof a)){var r='Cloudevent "'+t+'" must be of type '+o.map(function(e){return e.toUpperCase()}).sort().join(" or ")+".";throw new Error(r)}return a},n=function(e,i){if("undefined"!=typeof process)return process.env[e]||i};e.Cloudevent=function(e){var o,a,r,s,d=e.actor,u=e.data,v=e.datacontenttype,l=e.dataschema,p=e.origin,c=e.source,m=e.specversion,h=e.subject,N=e.type,f=e.wschannelid;this.data=void 0,this.datacontenttype=void 0,this.dataschema=void 0,this.id=void 0,this.source=void 0,this.specversion=void 0,this.subject=void 0,this.time=void 0,this.type=void 0,this.actor=void 0,this.wschannelid=void 0,this.originid=void 0,this.originsource=void 0,this.origintime=void 0,this.origintype=void 0;var I=((e=21)=>{let i="",t=crypto.getRandomValues(new Uint8Array(e));for(;e--;)i+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[e]];return i})(n("MILL_CLOUDEVENTS_NANOID_LENGTH",21));this.id=t({name:"id",permitted:[i.STRING],value:I});var g=null!=c?c:n("MILL_CLOUDEVENTS_SOURCE");this.source=t({name:"source",permitted:[i.STRING],value:g}),this.type=t({name:"type",permitted:[i.STRING],value:N}),this.specversion=t({name:"specversion",permitted:[i.STRING],value:null!=m?m:"1.0"});var y=(new Date).toISOString();this.time=t({name:"time",permitted:[i.STRING],value:y});var S=void 0===v?JSON.stringify(u):u;this.data=t({name:"data",value:S}),this.datacontenttype=t({name:"datacontenttype",permitted:[i.STRING,i.UNDEFINED],value:this.data?null!=v?v:"application/json":v}),this.dataschema=t({name:"dataschema",permitted:[i.STRING,i.UNDEFINED],value:l}),this.subject=t({name:"subject",permitted:[i.STRING,i.UNDEFINED],value:h}),this.actor=t({name:"actor",permitted:[i.STRING,i.UNDEFINED],value:d}),this.wschannelid=t({name:"wschannelid",permitted:[i.STRING,i.UNDEFINED],value:f});var E=null!=(o=null==p?void 0:p.originid)?o:this.id;this.originid=t({name:"originid",permitted:[i.STRING],value:E});var T=null!=(a=null==p?void 0:p.originsource)?a:this.source;this.originsource=t({name:"originsource",permitted:[i.STRING],value:T});var R=null!=(r=null==p?void 0:p.origintime)?r:this.time;this.origintime=t({name:"origintime",permitted:[i.STRING],value:R});var D=null!=(s=null==p?void 0:p.origintype)?s:this.type;this.origintype=t({name:"origintype",permitted:[i.STRING],value:D})}});
2
+ //# sourceMappingURL=cloudevents.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudevents.umd.js","sources":["../../src/utils/validateAttribute.ts","../../src/utils/fetchNodeEnv.ts","../../src/utils/cloudevent.ts","../../node_modules/nanoid/index.browser.js","../../node_modules/nanoid/url-alphabet/index.js"],"sourcesContent":["export enum Permitted {\r\n\tNUMBER = 'number',\r\n\tSTRING = 'string',\r\n\tUNDEFINED = 'undefined',\r\n}\r\n\r\ninterface ValidateAttributeProps {\r\n\tdeprecated?: boolean\r\n\tname: string\r\n\tpermitted?: Permitted[]\r\n\tvalue: any\r\n}\r\n\r\nexport const validateAttribute = ({ deprecated = false, name, permitted = [], value }: ValidateAttributeProps) => {\r\n\tif (deprecated) { console.warn(`Cloudevent \"${name}\" is depricated`) }\r\n\r\n\tif (permitted.length >= 1 && !permitted.includes(typeof value as any)) {\r\n\t\tconst message = `Cloudevent \"${name}\" must be of type ${permitted.map(s => s.toUpperCase()).sort().join(' or ')}.`\r\n\t\tthrow new Error(message)\r\n\t}\r\n\r\n\treturn value\r\n}\r\n","export const fetchNodeEnv = (name: string, fallbackValue?: any) => {\r\n\tif (typeof process === 'undefined') { return }\r\n\treturn process.env[name] || fallbackValue\r\n}\r\n","import { Permitted, validateAttribute } from './validateAttribute.js'\r\nimport { fetchNodeEnv } from './fetchNodeEnv.js'\r\nimport { nanoid } from 'nanoid'\r\n\r\nexport interface CloudeventProps {\r\n\t// * Cloudevent v1 props\r\n\tdata?: Cloudevent['data']\r\n\tdatacontenttype?: Cloudevent['datacontenttype']\r\n\tdataschema?: Cloudevent['dataschema']\r\n\tsource?: Cloudevent['source']\r\n\tspecversion?: Cloudevent['specversion']\r\n\tsubject?: Cloudevent['subject']\r\n\ttype: Cloudevent['type']\r\n\r\n\t// * In-house extension props\r\n\tactor?: Cloudevent['actor']\r\n\twschannelid?: Cloudevent['wschannelid']\r\n\r\n\t// * In-house helpers\r\n\torigin?: Cloudevent\r\n}\r\n\r\nexport class Cloudevent {\r\n\t// * Cloudevents v1 fields\r\n\treadonly data?: any\r\n\treadonly datacontenttype?: string\r\n\treadonly dataschema?: string\r\n\treadonly id: string\r\n\treadonly source: string\r\n\treadonly specversion: string\r\n\treadonly subject?: string\r\n\treadonly time: string\r\n\treadonly type: string\r\n\r\n\t// * In-house extensions\r\n\treadonly actor?: string\r\n\treadonly wschannelid?: string\r\n\r\n\t// * In-house origin extensions\r\n\treadonly originid: Cloudevent['id']\r\n\treadonly originsource: Cloudevent['source']\r\n\treadonly origintime: Cloudevent['time']\r\n\treadonly origintype: Cloudevent['type']\r\n\r\n\tconstructor({\r\n\t\tactor,\r\n\t\tdata,\r\n\t\tdatacontenttype,\r\n\t\tdataschema,\r\n\t\torigin,\r\n\t\tsource,\r\n\t\tspecversion,\r\n\t\tsubject,\r\n\t\ttype,\r\n\t\twschannelid,\r\n\t}: CloudeventProps) {\r\n\t\t// *******\r\n\t\t// * Required fields by Cloudevent v1 specification\r\n\t\tconst idValue = nanoid(fetchNodeEnv('MILL_CLOUDEVENTS_NANOID_LENGTH', 21))\r\n\t\tthis.id = validateAttribute({\r\n\t\t\tname: 'id',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: idValue\r\n\t\t})\r\n\r\n\t\tconst sourceValue = source ?? fetchNodeEnv('MILL_CLOUDEVENTS_SOURCE')\r\n\t\tthis.source = validateAttribute({\r\n\t\t\tname: 'source',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: sourceValue\r\n\t\t})\r\n\r\n\t\tthis.type = validateAttribute({\r\n\t\t\tname: 'type',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: type\r\n\t\t})\r\n\r\n\t\tconst specversionValue = specversion ?? '1.0'\r\n\t\tthis.specversion = validateAttribute({\r\n\t\t\tname: 'specversion',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: specversionValue\r\n\t\t})\r\n\r\n\t\tconst timeValue = new Date().toISOString()\r\n\t\tthis.time = validateAttribute({\r\n\t\t\tname: 'time',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: timeValue\r\n\t\t})\r\n\t\t// *******\r\n\r\n\t\t// *******\r\n\t\t// * Optional fields by Cloudevent v1 specification\r\n\t\tconst dataValue = datacontenttype === undefined ? JSON.stringify(data) : data\r\n\t\tthis.data = validateAttribute({\r\n\t\t\tname: 'data',\r\n\t\t\tvalue: dataValue\r\n\t\t})\r\n\r\n\t\tconst datacontenttypeValue = this.data\r\n\t\t\t? datacontenttype ?? 'application/json'\r\n\t\t\t: datacontenttype\r\n\t\tthis.datacontenttype = validateAttribute({\r\n\t\t\tname: 'datacontenttype',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: datacontenttypeValue\r\n\t\t})\r\n\r\n\t\tthis.dataschema = validateAttribute({\r\n\t\t\tname: 'dataschema',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: dataschema\r\n\t\t})\r\n\r\n\t\tthis.subject = validateAttribute({\r\n\t\t\tname: 'subject',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: subject\r\n\t\t})\r\n\t\t// *******\r\n\r\n\t\t// *******\r\n\t\t// * Optional in-house extentions\r\n\t\tthis.actor = validateAttribute({\r\n\t\t\tname: 'actor',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: actor,\r\n\t\t})\r\n\r\n\t\tthis.wschannelid = validateAttribute({\r\n\t\t\tname: 'wschannelid',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: wschannelid,\r\n\t\t})\r\n\t\t// *******\r\n\r\n\t\t// *******\r\n\t\t// * Origin in-house extentions\r\n\t\tconst originidValue = origin?.originid ?? this.id\r\n\t\tthis.originid = validateAttribute({\r\n\t\t\tname: 'originid',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: originidValue,\r\n\t\t})\r\n\r\n\t\tconst originsourceValue = origin?.originsource ?? this.source\r\n\t\tthis.originsource = validateAttribute({\r\n\t\t\tname: 'originsource',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: originsourceValue,\r\n\t\t})\r\n\r\n\t\tconst origintimeValue = origin?.origintime ?? this.time\r\n\t\tthis.origintime = validateAttribute({\r\n\t\t\tname: 'origintime',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: origintimeValue,\r\n\t\t})\r\n\r\n\t\tconst origintypeValue = origin?.origintype ?? this.type\r\n\t\tthis.origintype = validateAttribute({\r\n\t\t\tname: 'origintype',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: origintypeValue,\r\n\t\t})\r\n\t\t// *******\r\n\t}\r\n}\r\n","import { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n"],"names":["Permitted","validateAttribute","_ref","_ref$deprecated","deprecated","name","_ref$permitted","permitted","value","console","warn","length","includes","map","s","toUpperCase","sort","join","Error","message","fetchNodeEnv","fallbackValue","process","env","actor","data","datacontenttype","dataschema","origin","source","specversion","subject","type","wschannelid","this","id","time","originid","originsource","origintime","origintype","idValue","size","bytes","crypto","getRandomValues","Uint8Array","nanoid","STRING","sourceValue","timeValue","Date","toISOString","dataValue","undefined","JSON","stringify","UNDEFINED","originidValue","_origin$originid","originsourceValue","_origin$originsource","origintimeValue","_origin$origintime","origintypeValue","_origin$origintype"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e;!function(e){e.NUMBER="number",e.STRING="string",e.UNDEFINED="undefined"}(e||(e={}));var i=function(e){var i=e.deprecated,t=e.name,n=e.permitted,a=void 0===n?[]:n,r=e.value;if(void 0!==i&&i&&console.warn('Cloudevent "'+t+'" is depricated'),a.length>=1&&!a.includes(typeof r)){var o='Cloudevent "'+t+'" must be of type '+a.map(function(e){return e.toUpperCase()}).sort().join(" or ")+".";throw new Error(o)}return r},t=function(e,i){if("undefined"!=typeof process)return process.env[e]||i};exports.Cloudevent=function(n){var a,r,o,s,d=n.actor,v=n.data,u=n.datacontenttype,l=n.dataschema,m=n.origin,c=n.source,p=n.specversion,h=n.subject,N=n.type,I=n.wschannelid;this.data=void 0,this.datacontenttype=void 0,this.dataschema=void 0,this.id=void 0,this.source=void 0,this.specversion=void 0,this.subject=void 0,this.time=void 0,this.type=void 0,this.actor=void 0,this.wschannelid=void 0,this.originid=void 0,this.originsource=void 0,this.origintime=void 0,this.origintype=void 0;var g=((e=21)=>{let i="",t=crypto.getRandomValues(new Uint8Array(e));for(;e--;)i+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[e]];return i})(t("MILL_CLOUDEVENTS_NANOID_LENGTH",21));this.id=i({name:"id",permitted:[e.STRING],value:g});var S=null!=c?c:t("MILL_CLOUDEVENTS_SOURCE");this.source=i({name:"source",permitted:[e.STRING],value:S}),this.type=i({name:"type",permitted:[e.STRING],value:N}),this.specversion=i({name:"specversion",permitted:[e.STRING],value:null!=p?p:"1.0"});var E=(new Date).toISOString();this.time=i({name:"time",permitted:[e.STRING],value:E});var y=void 0===u?JSON.stringify(v):v;this.data=i({name:"data",value:y}),this.datacontenttype=i({name:"datacontenttype",permitted:[e.STRING,e.UNDEFINED],value:this.data?null!=u?u:"application/json":u}),this.dataschema=i({name:"dataschema",permitted:[e.STRING,e.UNDEFINED],value:l}),this.subject=i({name:"subject",permitted:[e.STRING,e.UNDEFINED],value:h}),this.actor=i({name:"actor",permitted:[e.STRING,e.UNDEFINED],value:d}),this.wschannelid=i({name:"wschannelid",permitted:[e.STRING,e.UNDEFINED],value:I});var R=null!=(a=null==m?void 0:m.originid)?a:this.id;this.originid=i({name:"originid",permitted:[e.STRING],value:R});var T=null!=(r=null==m?void 0:m.originsource)?r:this.source;this.originsource=i({name:"originsource",permitted:[e.STRING],value:T});var D=null!=(o=null==m?void 0:m.origintime)?o:this.time;this.origintime=i({name:"origintime",permitted:[e.STRING],value:D});var G=null!=(s=null==m?void 0:m.origintype)?s:this.type;this.origintype=i({name:"origintype",permitted:[e.STRING],value:G})};
2
+ //# sourceMappingURL=cloudevents.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudevents.cjs","sources":["../../src/utils/validateAttribute.ts","../../src/utils/fetchNodeEnv.ts","../../src/utils/cloudevent.ts","../../node_modules/nanoid/index.browser.js","../../node_modules/nanoid/url-alphabet/index.js"],"sourcesContent":["export enum Permitted {\r\n\tNUMBER = 'number',\r\n\tSTRING = 'string',\r\n\tUNDEFINED = 'undefined',\r\n}\r\n\r\ninterface ValidateAttributeProps {\r\n\tdeprecated?: boolean\r\n\tname: string\r\n\tpermitted?: Permitted[]\r\n\tvalue: any\r\n}\r\n\r\nexport const validateAttribute = ({ deprecated = false, name, permitted = [], value }: ValidateAttributeProps) => {\r\n\tif (deprecated) { console.warn(`Cloudevent \"${name}\" is depricated`) }\r\n\r\n\tif (permitted.length >= 1 && !permitted.includes(typeof value as any)) {\r\n\t\tconst message = `Cloudevent \"${name}\" must be of type ${permitted.map(s => s.toUpperCase()).sort().join(' or ')}.`\r\n\t\tthrow new Error(message)\r\n\t}\r\n\r\n\treturn value\r\n}\r\n","export const fetchNodeEnv = (name: string, fallbackValue?: any) => {\r\n\tif (typeof process === 'undefined') { return }\r\n\treturn process.env[name] || fallbackValue\r\n}\r\n","import { Permitted, validateAttribute } from './validateAttribute.js'\r\nimport { fetchNodeEnv } from './fetchNodeEnv.js'\r\nimport { nanoid } from 'nanoid'\r\n\r\nexport interface CloudeventProps {\r\n\t// * Cloudevent v1 props\r\n\tdata?: Cloudevent['data']\r\n\tdatacontenttype?: Cloudevent['datacontenttype']\r\n\tdataschema?: Cloudevent['dataschema']\r\n\tsource?: Cloudevent['source']\r\n\tspecversion?: Cloudevent['specversion']\r\n\tsubject?: Cloudevent['subject']\r\n\ttype: Cloudevent['type']\r\n\r\n\t// * In-house extension props\r\n\tactor?: Cloudevent['actor']\r\n\twschannelid?: Cloudevent['wschannelid']\r\n\r\n\t// * In-house helpers\r\n\torigin?: Cloudevent\r\n}\r\n\r\nexport class Cloudevent {\r\n\t// * Cloudevents v1 fields\r\n\treadonly data?: any\r\n\treadonly datacontenttype?: string\r\n\treadonly dataschema?: string\r\n\treadonly id: string\r\n\treadonly source: string\r\n\treadonly specversion: string\r\n\treadonly subject?: string\r\n\treadonly time: string\r\n\treadonly type: string\r\n\r\n\t// * In-house extensions\r\n\treadonly actor?: string\r\n\treadonly wschannelid?: string\r\n\r\n\t// * In-house origin extensions\r\n\treadonly originid: Cloudevent['id']\r\n\treadonly originsource: Cloudevent['source']\r\n\treadonly origintime: Cloudevent['time']\r\n\treadonly origintype: Cloudevent['type']\r\n\r\n\tconstructor({\r\n\t\tactor,\r\n\t\tdata,\r\n\t\tdatacontenttype,\r\n\t\tdataschema,\r\n\t\torigin,\r\n\t\tsource,\r\n\t\tspecversion,\r\n\t\tsubject,\r\n\t\ttype,\r\n\t\twschannelid,\r\n\t}: CloudeventProps) {\r\n\t\t// *******\r\n\t\t// * Required fields by Cloudevent v1 specification\r\n\t\tconst idValue = nanoid(fetchNodeEnv('MILL_CLOUDEVENTS_NANOID_LENGTH', 21))\r\n\t\tthis.id = validateAttribute({\r\n\t\t\tname: 'id',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: idValue\r\n\t\t})\r\n\r\n\t\tconst sourceValue = source ?? fetchNodeEnv('MILL_CLOUDEVENTS_SOURCE')\r\n\t\tthis.source = validateAttribute({\r\n\t\t\tname: 'source',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: sourceValue\r\n\t\t})\r\n\r\n\t\tthis.type = validateAttribute({\r\n\t\t\tname: 'type',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: type\r\n\t\t})\r\n\r\n\t\tconst specversionValue = specversion ?? '1.0'\r\n\t\tthis.specversion = validateAttribute({\r\n\t\t\tname: 'specversion',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: specversionValue\r\n\t\t})\r\n\r\n\t\tconst timeValue = new Date().toISOString()\r\n\t\tthis.time = validateAttribute({\r\n\t\t\tname: 'time',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: timeValue\r\n\t\t})\r\n\t\t// *******\r\n\r\n\t\t// *******\r\n\t\t// * Optional fields by Cloudevent v1 specification\r\n\t\tconst dataValue = datacontenttype === undefined ? JSON.stringify(data) : data\r\n\t\tthis.data = validateAttribute({\r\n\t\t\tname: 'data',\r\n\t\t\tvalue: dataValue\r\n\t\t})\r\n\r\n\t\tconst datacontenttypeValue = this.data\r\n\t\t\t? datacontenttype ?? 'application/json'\r\n\t\t\t: datacontenttype\r\n\t\tthis.datacontenttype = validateAttribute({\r\n\t\t\tname: 'datacontenttype',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: datacontenttypeValue\r\n\t\t})\r\n\r\n\t\tthis.dataschema = validateAttribute({\r\n\t\t\tname: 'dataschema',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: dataschema\r\n\t\t})\r\n\r\n\t\tthis.subject = validateAttribute({\r\n\t\t\tname: 'subject',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: subject\r\n\t\t})\r\n\t\t// *******\r\n\r\n\t\t// *******\r\n\t\t// * Optional in-house extentions\r\n\t\tthis.actor = validateAttribute({\r\n\t\t\tname: 'actor',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: actor,\r\n\t\t})\r\n\r\n\t\tthis.wschannelid = validateAttribute({\r\n\t\t\tname: 'wschannelid',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: wschannelid,\r\n\t\t})\r\n\t\t// *******\r\n\r\n\t\t// *******\r\n\t\t// * Origin in-house extentions\r\n\t\tconst originidValue = origin?.originid ?? this.id\r\n\t\tthis.originid = validateAttribute({\r\n\t\t\tname: 'originid',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: originidValue,\r\n\t\t})\r\n\r\n\t\tconst originsourceValue = origin?.originsource ?? this.source\r\n\t\tthis.originsource = validateAttribute({\r\n\t\t\tname: 'originsource',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: originsourceValue,\r\n\t\t})\r\n\r\n\t\tconst origintimeValue = origin?.origintime ?? this.time\r\n\t\tthis.origintime = validateAttribute({\r\n\t\t\tname: 'origintime',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: origintimeValue,\r\n\t\t})\r\n\r\n\t\tconst origintypeValue = origin?.origintype ?? this.type\r\n\t\tthis.origintype = validateAttribute({\r\n\t\t\tname: 'origintype',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: origintypeValue,\r\n\t\t})\r\n\t\t// *******\r\n\t}\r\n}\r\n","import { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n"],"names":["Permitted","validateAttribute","_ref","_ref$deprecated","deprecated","name","_ref$permitted","permitted","value","console","warn","length","includes","map","s","toUpperCase","sort","join","Error","message","fetchNodeEnv","fallbackValue","process","env","actor","data","datacontenttype","dataschema","origin","source","specversion","subject","type","wschannelid","this","id","time","originid","originsource","origintime","origintype","idValue","size","bytes","crypto","getRandomValues","Uint8Array","nanoid","STRING","sourceValue","timeValue","Date","toISOString","dataValue","undefined","JSON","stringify","UNDEFINED","originidValue","_origin$originid","originsourceValue","_origin$originsource","origintimeValue","_origin$origintime","origintypeValue","_origin$origintype"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{nanoid as i}from"nanoid";var e;!function(i){i.NUMBER="number",i.STRING="string",i.UNDEFINED="undefined"}(e||(e={}));var t=function(i){var e=i.deprecated,t=i.name,n=i.permitted,a=void 0===n?[]:n,o=i.value;if(void 0!==e&&e&&console.warn('Cloudevent "'+t+'" is depricated'),a.length>=1&&!a.includes(typeof o)){var r='Cloudevent "'+t+'" must be of type '+a.map(function(i){return i.toUpperCase()}).sort().join(" or ")+".";throw new Error(r)}return o},n=function(i,e){if("undefined"!=typeof process)return process.env[i]||e},a=function(a){var o,r,s,d,v=a.actor,u=a.data,l=a.datacontenttype,m=a.dataschema,p=a.origin,c=a.source,h=a.specversion,N=a.subject,I=a.type,g=a.wschannelid;this.data=void 0,this.datacontenttype=void 0,this.dataschema=void 0,this.id=void 0,this.source=void 0,this.specversion=void 0,this.subject=void 0,this.time=void 0,this.type=void 0,this.actor=void 0,this.wschannelid=void 0,this.originid=void 0,this.originsource=void 0,this.origintime=void 0,this.origintype=void 0;var S=i(n("MILL_CLOUDEVENTS_NANOID_LENGTH",21));this.id=t({name:"id",permitted:[e.STRING],value:S});var E=null!=c?c:n("MILL_CLOUDEVENTS_SOURCE");this.source=t({name:"source",permitted:[e.STRING],value:E}),this.type=t({name:"type",permitted:[e.STRING],value:I}),this.specversion=t({name:"specversion",permitted:[e.STRING],value:null!=h?h:"1.0"});var T=(new Date).toISOString();this.time=t({name:"time",permitted:[e.STRING],value:T});var y=void 0===l?JSON.stringify(u):u;this.data=t({name:"data",value:y}),this.datacontenttype=t({name:"datacontenttype",permitted:[e.STRING,e.UNDEFINED],value:this.data?null!=l?l:"application/json":l}),this.dataschema=t({name:"dataschema",permitted:[e.STRING,e.UNDEFINED],value:m}),this.subject=t({name:"subject",permitted:[e.STRING,e.UNDEFINED],value:N}),this.actor=t({name:"actor",permitted:[e.STRING,e.UNDEFINED],value:v}),this.wschannelid=t({name:"wschannelid",permitted:[e.STRING,e.UNDEFINED],value:g});var R=null!=(o=null==p?void 0:p.originid)?o:this.id;this.originid=t({name:"originid",permitted:[e.STRING],value:R});var D=null!=(r=null==p?void 0:p.originsource)?r:this.source;this.originsource=t({name:"originsource",permitted:[e.STRING],value:D});var G=null!=(s=null==p?void 0:p.origintime)?s:this.time;this.origintime=t({name:"origintime",permitted:[e.STRING],value:G});var f=null!=(d=null==p?void 0:p.origintype)?d:this.type;this.origintype=t({name:"origintype",permitted:[e.STRING],value:f})};export{a as Cloudevent};
2
+ //# sourceMappingURL=cloudevents.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudevents.esm.js","sources":["../../src/utils/validateAttribute.ts","../../src/utils/fetchNodeEnv.ts","../../src/utils/cloudevent.ts"],"sourcesContent":["export enum Permitted {\r\n\tNUMBER = 'number',\r\n\tSTRING = 'string',\r\n\tUNDEFINED = 'undefined',\r\n}\r\n\r\ninterface ValidateAttributeProps {\r\n\tdeprecated?: boolean\r\n\tname: string\r\n\tpermitted?: Permitted[]\r\n\tvalue: any\r\n}\r\n\r\nexport const validateAttribute = ({ deprecated = false, name, permitted = [], value }: ValidateAttributeProps) => {\r\n\tif (deprecated) { console.warn(`Cloudevent \"${name}\" is depricated`) }\r\n\r\n\tif (permitted.length >= 1 && !permitted.includes(typeof value as any)) {\r\n\t\tconst message = `Cloudevent \"${name}\" must be of type ${permitted.map(s => s.toUpperCase()).sort().join(' or ')}.`\r\n\t\tthrow new Error(message)\r\n\t}\r\n\r\n\treturn value\r\n}\r\n","export const fetchNodeEnv = (name: string, fallbackValue?: any) => {\r\n\tif (typeof process === 'undefined') { return }\r\n\treturn process.env[name] || fallbackValue\r\n}\r\n","import { Permitted, validateAttribute } from './validateAttribute.js'\r\nimport { fetchNodeEnv } from './fetchNodeEnv.js'\r\nimport { nanoid } from 'nanoid'\r\n\r\nexport interface CloudeventProps {\r\n\t// * Cloudevent v1 props\r\n\tdata?: Cloudevent['data']\r\n\tdatacontenttype?: Cloudevent['datacontenttype']\r\n\tdataschema?: Cloudevent['dataschema']\r\n\tsource?: Cloudevent['source']\r\n\tspecversion?: Cloudevent['specversion']\r\n\tsubject?: Cloudevent['subject']\r\n\ttype: Cloudevent['type']\r\n\r\n\t// * In-house extension props\r\n\tactor?: Cloudevent['actor']\r\n\twschannelid?: Cloudevent['wschannelid']\r\n\r\n\t// * In-house helpers\r\n\torigin?: Cloudevent\r\n}\r\n\r\nexport class Cloudevent {\r\n\t// * Cloudevents v1 fields\r\n\treadonly data?: any\r\n\treadonly datacontenttype?: string\r\n\treadonly dataschema?: string\r\n\treadonly id: string\r\n\treadonly source: string\r\n\treadonly specversion: string\r\n\treadonly subject?: string\r\n\treadonly time: string\r\n\treadonly type: string\r\n\r\n\t// * In-house extensions\r\n\treadonly actor?: string\r\n\treadonly wschannelid?: string\r\n\r\n\t// * In-house origin extensions\r\n\treadonly originid: Cloudevent['id']\r\n\treadonly originsource: Cloudevent['source']\r\n\treadonly origintime: Cloudevent['time']\r\n\treadonly origintype: Cloudevent['type']\r\n\r\n\tconstructor({\r\n\t\tactor,\r\n\t\tdata,\r\n\t\tdatacontenttype,\r\n\t\tdataschema,\r\n\t\torigin,\r\n\t\tsource,\r\n\t\tspecversion,\r\n\t\tsubject,\r\n\t\ttype,\r\n\t\twschannelid,\r\n\t}: CloudeventProps) {\r\n\t\t// *******\r\n\t\t// * Required fields by Cloudevent v1 specification\r\n\t\tconst idValue = nanoid(fetchNodeEnv('MILL_CLOUDEVENTS_NANOID_LENGTH', 21))\r\n\t\tthis.id = validateAttribute({\r\n\t\t\tname: 'id',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: idValue\r\n\t\t})\r\n\r\n\t\tconst sourceValue = source ?? fetchNodeEnv('MILL_CLOUDEVENTS_SOURCE')\r\n\t\tthis.source = validateAttribute({\r\n\t\t\tname: 'source',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: sourceValue\r\n\t\t})\r\n\r\n\t\tthis.type = validateAttribute({\r\n\t\t\tname: 'type',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: type\r\n\t\t})\r\n\r\n\t\tconst specversionValue = specversion ?? '1.0'\r\n\t\tthis.specversion = validateAttribute({\r\n\t\t\tname: 'specversion',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: specversionValue\r\n\t\t})\r\n\r\n\t\tconst timeValue = new Date().toISOString()\r\n\t\tthis.time = validateAttribute({\r\n\t\t\tname: 'time',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: timeValue\r\n\t\t})\r\n\t\t// *******\r\n\r\n\t\t// *******\r\n\t\t// * Optional fields by Cloudevent v1 specification\r\n\t\tconst dataValue = datacontenttype === undefined ? JSON.stringify(data) : data\r\n\t\tthis.data = validateAttribute({\r\n\t\t\tname: 'data',\r\n\t\t\tvalue: dataValue\r\n\t\t})\r\n\r\n\t\tconst datacontenttypeValue = this.data\r\n\t\t\t? datacontenttype ?? 'application/json'\r\n\t\t\t: datacontenttype\r\n\t\tthis.datacontenttype = validateAttribute({\r\n\t\t\tname: 'datacontenttype',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: datacontenttypeValue\r\n\t\t})\r\n\r\n\t\tthis.dataschema = validateAttribute({\r\n\t\t\tname: 'dataschema',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: dataschema\r\n\t\t})\r\n\r\n\t\tthis.subject = validateAttribute({\r\n\t\t\tname: 'subject',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: subject\r\n\t\t})\r\n\t\t// *******\r\n\r\n\t\t// *******\r\n\t\t// * Optional in-house extentions\r\n\t\tthis.actor = validateAttribute({\r\n\t\t\tname: 'actor',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: actor,\r\n\t\t})\r\n\r\n\t\tthis.wschannelid = validateAttribute({\r\n\t\t\tname: 'wschannelid',\r\n\t\t\tpermitted: [Permitted.STRING, Permitted.UNDEFINED],\r\n\t\t\tvalue: wschannelid,\r\n\t\t})\r\n\t\t// *******\r\n\r\n\t\t// *******\r\n\t\t// * Origin in-house extentions\r\n\t\tconst originidValue = origin?.originid ?? this.id\r\n\t\tthis.originid = validateAttribute({\r\n\t\t\tname: 'originid',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: originidValue,\r\n\t\t})\r\n\r\n\t\tconst originsourceValue = origin?.originsource ?? this.source\r\n\t\tthis.originsource = validateAttribute({\r\n\t\t\tname: 'originsource',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: originsourceValue,\r\n\t\t})\r\n\r\n\t\tconst origintimeValue = origin?.origintime ?? this.time\r\n\t\tthis.origintime = validateAttribute({\r\n\t\t\tname: 'origintime',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: origintimeValue,\r\n\t\t})\r\n\r\n\t\tconst origintypeValue = origin?.origintype ?? this.type\r\n\t\tthis.origintype = validateAttribute({\r\n\t\t\tname: 'origintype',\r\n\t\t\tpermitted: [Permitted.STRING],\r\n\t\t\tvalue: origintypeValue,\r\n\t\t})\r\n\t\t// *******\r\n\t}\r\n}\r\n"],"names":["Permitted","validateAttribute","_ref","_ref$deprecated","deprecated","name","_ref$permitted","permitted","value","console","warn","length","includes","map","s","toUpperCase","sort","join","Error","message","fetchNodeEnv","fallbackValue","process","env","Cloudevent","actor","data","datacontenttype","dataschema","origin","source","specversion","subject","type","wschannelid","this","id","time","originid","originsource","origintime","origintype","idValue","nanoid","STRING","sourceValue","timeValue","Date","toISOString","dataValue","undefined","JSON","stringify","UNDEFINED","originidValue","_origin$originid","originsourceValue","_origin$originsource","origintimeValue","_origin$origintime","origintypeValue","_origin$origintype"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { Cloudevent, CloudeventProps } from './utils/cloudevent.js';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ export interface CloudeventProps {
2
+ data?: Cloudevent['data'];
3
+ datacontenttype?: Cloudevent['datacontenttype'];
4
+ dataschema?: Cloudevent['dataschema'];
5
+ source?: Cloudevent['source'];
6
+ specversion?: Cloudevent['specversion'];
7
+ subject?: Cloudevent['subject'];
8
+ type: Cloudevent['type'];
9
+ actor?: Cloudevent['actor'];
10
+ wschannelid?: Cloudevent['wschannelid'];
11
+ origin?: Cloudevent;
12
+ }
13
+ export declare class Cloudevent {
14
+ readonly data?: any;
15
+ readonly datacontenttype?: string;
16
+ readonly dataschema?: string;
17
+ readonly id: string;
18
+ readonly source: string;
19
+ readonly specversion: string;
20
+ readonly subject?: string;
21
+ readonly time: string;
22
+ readonly type: string;
23
+ readonly actor?: string;
24
+ readonly wschannelid?: string;
25
+ readonly originid: Cloudevent['id'];
26
+ readonly originsource: Cloudevent['source'];
27
+ readonly origintime: Cloudevent['time'];
28
+ readonly origintype: Cloudevent['type'];
29
+ constructor({ actor, data, datacontenttype, dataschema, origin, source, specversion, subject, type, wschannelid, }: CloudeventProps);
30
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export declare const fetchNodeEnv: (name: string, fallbackValue?: any) => any;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ export declare enum Permitted {
2
+ NUMBER = "number",
3
+ STRING = "string",
4
+ UNDEFINED = "undefined"
5
+ }
6
+ interface ValidateAttributeProps {
7
+ deprecated?: boolean;
8
+ name: string;
9
+ permitted?: Permitted[];
10
+ value: any;
11
+ }
12
+ export declare const validateAttribute: ({ deprecated, name, permitted, value }: ValidateAttributeProps) => any;
13
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,26 +1,33 @@
1
1
  {
2
2
  "name": "@1mill/cloudevents",
3
- "version": "4.6.3",
3
+ "version": "5.0.0",
4
4
  "description": "Node cloudevents specification and helper",
5
- "jsnext:main": "dist/index.module.js",
6
- "main": "dist/index.cjs",
7
- "module": "dist/index.module.js",
8
- "source": "src/index.js",
9
- "umd:main": "dist/index.umd.js",
10
- "unpkg": "dist/index.umd.js",
5
+ "source": "./src/index.ts",
11
6
  "type": "module",
12
- "files": [
13
- "dist",
14
- "src"
15
- ],
7
+ "exports": {
8
+ "import": "./dist/bundle-node/cloudevents.esm.js",
9
+ "require": "./dist/bundle-node/cloudevents.cjs",
10
+ "types": "./dist/index.d.ts",
11
+ "default": "./dist/bundle-browser/cloudevents.esm.js"
12
+ },
13
+ "main": "./dist/bundle-node/cloudevents.cjs",
14
+ "module": "./dist/bundle-node/cloudevents.esm.js",
15
+ "types": "./dist/index.d.ts",
16
+ "umd:main": "./dist/bundle-browser/cloudevents.umd.js",
16
17
  "scripts": {
17
18
  "build": "rm -rf ./dist && npm run build:browser && npm run build:node",
18
- "build:browser": "microbundle --format modern,umd --external none",
19
- "build:node": "microbundle --format cjs,esm",
19
+ "build:browser": "microbundle --format modern,umd --external none --output ./dist/bundle-browser",
20
+ "build:node": "npm run build:node:module && npm run build:node:commonjs",
21
+ "build:node:commonjs": "microbundle --format cjs --external none --output ./dist/bundle-node",
22
+ "build:node:module": "microbundle --format esm --output ./dist/bundle-node",
20
23
  "deploy": "npm run build && npm publish",
21
24
  "dev": "microbundle watch",
22
- "test:unit": "mocha \"src/**/*.test.js\" --recursive"
25
+ "test": "npm run test:unit",
26
+ "test:unit": "ts-mocha"
23
27
  },
28
+ "files": [
29
+ "./dist"
30
+ ],
24
31
  "homepage": "https://github.com/1mill/cloudevents",
25
32
  "bugs": {
26
33
  "url": "https://github.com/1mill/cloudevents/issues"
@@ -34,15 +41,24 @@
34
41
  "url": "git+https://github.com/1mill/cloudevents.git"
35
42
  },
36
43
  "dependencies": {
37
- "nanoid": "^3.3.7"
44
+ "nanoid": "^5.0.7"
38
45
  },
39
46
  "devDependencies": {
47
+ "@types/chai": "^4.3.17",
48
+ "@types/chai-subset": "^1.3.5",
49
+ "@types/mocha": "^10.0.7",
50
+ "@types/node": "^22.5.1",
51
+ "@types/sinon": "^17.0.3",
52
+ "@types/sinon-chai": "^3.2.12",
40
53
  "chai": "^4.5.0",
41
54
  "chai-iso8601": "^1.0.0",
42
55
  "chai-subset": "^1.6.0",
43
56
  "microbundle": "^0.15.1",
44
57
  "mocha": "^10.7.3",
45
58
  "sinon": "^14.0.2",
46
- "sinon-chai": "^3.7.0"
59
+ "sinon-chai": "^3.7.0",
60
+ "ts-mocha": "^10.0.0",
61
+ "ts-node": "^10.9.2",
62
+ "typescript": "^5.5.4"
47
63
  }
48
64
  }
package/CHANGELOG.md DELETED
@@ -1,70 +0,0 @@
1
- # Changelog for @1mill/cloudevents
2
-
3
- ## 4.6.3
4
-
5
- * Update `README` to better reflect deployment process
6
-
7
- ## 4.6.2
8
-
9
- * Update `nanoid` from `^3.3.4` to `^3.3.7`.
10
- * Move `sinon-chai` to `devDependencies`.
11
- * Update various `devDependencies`.
12
-
13
- ## 4.6.1
14
-
15
- * Fix spelling in `README.md`.
16
-
17
- ## 4.6.0
18
-
19
- * Add `cloudevent.originactor` attribute and support in `cloudevent.origin({...})` instance method.
20
- * Depricate `cloudevent.originator({...})` instance method.
21
- * Depricate `cloudevent.originatorid` attribute.
22
-
23
- ## 4.5.0
24
-
25
- * Add `cloudevent.originator({...})` instance method.
26
- * Improve unit tests for `cloudevent.wschannel({...})`.
27
-
28
- ## 4.4.1
29
-
30
- * Use `const ce = this` in constructor to cosmetically match instance method declarations.
31
-
32
- ## 4.4.0
33
-
34
- * Add `cloudevent.wschannel({...})` instance method
35
- * Update `README.md`
36
-
37
- ## 4.3.0
38
-
39
- * Add `cloudevent.origin({...})` instance method
40
- * Update `README.md`
41
-
42
- ## 4.2.1
43
-
44
- * Upgrade to `microbundle@^0.15.1`
45
-
46
- ## 4.2.0
47
-
48
- * Add optional `wschannelid` attribute.
49
- * Fix unit test description.
50
-
51
- ## 4.1.1
52
-
53
- * Improve formatting of code.
54
- * Update `README.md`.
55
-
56
- ## 4.1.0
57
-
58
- * Add optional `originatorid` attribute.
59
- * Add unit tests for every Cloudevent attribute (e.g. `id`, `data`, `originid`, etc.) using `mocha`, `sinon`, and `chai`.
60
- * Update `nanoid@^3.3.4`
61
-
62
- ## 4.0.1
63
-
64
- * Check that `process.env` be defined before using it to fix compatability issue with browsers.
65
- * Replace `require` with `import`.
66
-
67
- ## 4.0.0
68
-
69
- * Bundle package with `microbundle@^0.14.2` to build Browser and Node compatable versions.
70
- * Change pacakge to `"type": "module"`.