@carlgo11/simpleimfparser 0.0.1 → 0.0.2

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 (58) hide show
  1. package/LICENSE +21 -674
  2. package/README.md +59 -0
  3. package/dist/index.d.ts +14 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/parsers/parseEnvelope.d.ts +8 -0
  6. package/dist/parsers/parseEnvelope.d.ts.map +1 -0
  7. package/dist/parsers/parseHeaders.d.ts +10 -0
  8. package/dist/parsers/parseHeaders.d.ts.map +1 -0
  9. package/dist/parsers/parseMessage.d.ts +11 -0
  10. package/dist/parsers/parseMessage.d.ts.map +1 -0
  11. package/dist/types/Attachment.d.ts +56 -0
  12. package/dist/types/Attachment.d.ts.map +1 -0
  13. package/dist/types/Email.d.ts +114 -0
  14. package/dist/types/Email.d.ts.map +1 -0
  15. package/dist/types/Envelope.d.ts +45 -0
  16. package/dist/types/Envelope.d.ts.map +1 -0
  17. package/dist/types/Sender.d.ts +75 -0
  18. package/dist/types/Sender.d.ts.map +1 -0
  19. package/dist/utils/streamToString.d.ts +8 -0
  20. package/dist/utils/streamToString.d.ts.map +1 -0
  21. package/package.json +14 -4
  22. package/.github/workflows/publish.yaml +0 -51
  23. package/.github/workflows/test.yaml +0 -14
  24. package/.gitignore +0 -6
  25. package/dist/index.js +0 -14
  26. package/dist/parsers/parseEnvelope.js +0 -12
  27. package/dist/parsers/parseHeaders.js +0 -68
  28. package/dist/parsers/parseMessage.js +0 -36
  29. package/dist/types/Attachment.js +0 -2
  30. package/dist/types/Email.js +0 -59
  31. package/dist/types/Envelope.js +0 -2
  32. package/dist/types/Sender.js +0 -2
  33. package/dist/utils/streamToString.js +0 -16
  34. package/src/index.js +0 -14
  35. package/src/index.ts +0 -14
  36. package/src/parsers/parseEnvelope.js +0 -12
  37. package/src/parsers/parseEnvelope.ts +0 -11
  38. package/src/parsers/parseHeaders.js +0 -68
  39. package/src/parsers/parseHeaders.ts +0 -65
  40. package/src/parsers/parseMessage.js +0 -36
  41. package/src/parsers/parseMessage.ts +0 -32
  42. package/src/types/Attachment.js +0 -2
  43. package/src/types/Attachment.ts +0 -6
  44. package/src/types/Email.js +0 -59
  45. package/src/types/Email.ts +0 -77
  46. package/src/types/Envelope.js +0 -2
  47. package/src/types/Envelope.ts +0 -9
  48. package/src/types/Sender.js +0 -2
  49. package/src/types/Sender.ts +0 -10
  50. package/src/utils/streamToString.js +0 -16
  51. package/src/utils/streamToString.ts +0 -15
  52. package/test/index.test.js +0 -38
  53. package/test/index.test.ts +0 -40
  54. package/test/parsers/parseHeaders.test.js +0 -32
  55. package/test/parsers/parseHeaders.test.ts +0 -32
  56. package/test/parsers/parseMessage.test.js +0 -35
  57. package/test/parsers/parseMessage.test.ts +0 -34
  58. package/tsconfig.json +0 -16
@@ -1,40 +0,0 @@
1
- import { describe, it } from 'node:test';
2
- import { faker } from '@faker-js/faker';
3
- import assert from 'node:assert';
4
- import parseEmail from '../src';
5
- import { Readable } from 'node:stream';
6
-
7
- describe('simpleIMFParser', () => {
8
- it('Should parse valid message (string)', async () => {
9
- const headers: Record<string, string> = {
10
- 'Subject': faker.lorem.sentence(),
11
- 'MESSAGE-ID': `${faker.string.uuid()}@${faker.internet.domainName()}`,
12
- 'from': `"${faker.person.fullName()}" <${faker.internet.email()}>`,
13
- 'To': `${faker.person.fullName()} <${faker.internet.email()}>`,
14
- };
15
- const headersString = Object.entries(headers).map(([key, value]) => `${key}: ${value}`).join('\r\n');
16
- const body = faker.lorem.paragraphs(5, '\r\n');
17
-
18
- const full_email = `${headersString}\r\n\r\n${body}`;
19
- const email = await parseEmail(full_email, {});
20
- assert.ok(email.toString());
21
- });
22
-
23
- it('Should parse valid message (stream)', async () => {
24
- const headers: Record<string, string> = {
25
- 'from': `"${faker.person.fullName()}" <${faker.internet.email()}>`,
26
- 'To': `${faker.person.fullName()} <${faker.internet.email({allowSpecialCharacters: true})}>`,
27
- 'Subject': faker.lorem.sentence(),
28
- 'MESSAGE-ID': `${faker.string.uuid()}@${faker.internet.domainName()}`,
29
- };
30
- const headersString = Object.entries(headers).map(([key, value]) => `${key}: ${value}`).join('\r\n');
31
- const body = faker.lorem.paragraphs(5, '\r\n');
32
-
33
- const full_email = `${headersString}\r\n\r\n${body}`;
34
-
35
- const email = await parseEmail(Readable.from(full_email), {});
36
- assert.ok(email.toString());
37
- });
38
-
39
-
40
- });
@@ -1,32 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_test_1 = require("node:test");
7
- const faker_1 = require("@faker-js/faker");
8
- const node_assert_1 = __importDefault(require("node:assert"));
9
- const parseHeaders_1 = __importDefault(require("../../src/parsers/parseHeaders"));
10
- (0, node_test_1.describe)('Parse Headers', () => {
11
- (0, node_test_1.it)('Various case header names', () => {
12
- const headers = {
13
- 'subject': faker_1.faker.lorem.sentence(),
14
- 'MESSAGE-ID': `${faker_1.faker.string.uuid()}@${faker_1.faker.internet.domainName()}`,
15
- 'FroM': `${faker_1.faker.person.fullName()} <${faker_1.faker.internet.email()}>`,
16
- 'to': `${faker_1.faker.person.fullName()} <${faker_1.faker.internet.email()}>`,
17
- };
18
- const headersString = Object.entries(headers).map(([key, value]) => `${key}: ${value}`).join('\r\n');
19
- node_assert_1.default.ok((0, parseHeaders_1.default)(headersString));
20
- });
21
- /*
22
- it('Extra text after email address', async () => {
23
- const headers: Record<string, string> = {
24
- 'To': `${faker.person.fullName()} <${faker.internet.email()}> ${faker.lorem.sentence()}`,
25
- };
26
- const headersString = Object.entries(headers).map(([key, value]) => `${key}: ${value}`).join('\r\n');
27
- await assert.rejects(async () => parseHeaders(headersString));
28
- });*/
29
- (0, node_test_1.it)('Missing : separator.', async () => {
30
- await node_assert_1.default.rejects(async () => (0, parseHeaders_1.default)(`Subject ${faker_1.faker.lorem.sentence()}`));
31
- });
32
- });
@@ -1,32 +0,0 @@
1
- import test, { describe, it } from 'node:test';
2
- import { faker } from '@faker-js/faker';
3
- import assert from 'node:assert';
4
- import parseMessage from '../../src/parsers/parseMessage';
5
- import parseHeaders from '../../src/parsers/parseHeaders';
6
-
7
-
8
-
9
- describe('Parse Headers', () => {
10
- it('Various case header names', () => {
11
- const headers: Record<string, string> = {
12
- 'subject': faker.lorem.sentence(),
13
- 'MESSAGE-ID': `${faker.string.uuid()}@${faker.internet.domainName()}`,
14
- 'FroM': `${faker.person.fullName()} <${faker.internet.email()}>`,
15
- 'to': `${faker.person.fullName()} <${faker.internet.email()}>`,
16
- };
17
- const headersString = Object.entries(headers).map(([key, value]) => `${key}: ${value}`).join('\r\n');
18
- assert.ok(parseHeaders(headersString));
19
- });
20
- /*
21
- it('Extra text after email address', async () => {
22
- const headers: Record<string, string> = {
23
- 'To': `${faker.person.fullName()} <${faker.internet.email()}> ${faker.lorem.sentence()}`,
24
- };
25
- const headersString = Object.entries(headers).map(([key, value]) => `${key}: ${value}`).join('\r\n');
26
- await assert.rejects(async () => parseHeaders(headersString));
27
- });*/
28
-
29
- it('Missing : separator.', async () => {
30
- await assert.rejects(async () => parseHeaders(`Subject ${faker.lorem.sentence()}`));
31
- });
32
- });
@@ -1,35 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_test_1 = require("node:test");
7
- const faker_1 = require("@faker-js/faker");
8
- const node_assert_1 = __importDefault(require("node:assert"));
9
- const parseMessage_1 = __importDefault(require("../../src/parsers/parseMessage"));
10
- (0, node_test_1.describe)('Parse Message', () => {
11
- (0, node_test_1.it)('Should parse valid message', async () => {
12
- const headers = {
13
- 'Subject': faker_1.faker.lorem.sentence(),
14
- 'Message-ID': `${faker_1.faker.string.uuid()}@${faker_1.faker.internet.domainName()}`,
15
- 'From': `"${faker_1.faker.person.fullName()}" <${faker_1.faker.internet.email()}>`,
16
- 'To': `${faker_1.faker.person.fullName()} <${faker_1.faker.internet.email()}>`,
17
- };
18
- const headersString = Object.entries(headers).map(([key, value]) => `${key}: ${value}`).join('\r\n');
19
- const body = faker_1.faker.lorem.paragraphs(5).replace('\n', '\r\n');
20
- const full_email = `${headersString}\r\n\r\n${body}`;
21
- node_assert_1.default.ok(await (0, parseMessage_1.default)(full_email));
22
- });
23
- (0, node_test_1.it)('Should reject invalid message divider', async () => {
24
- const headers = {
25
- 'Subject': faker_1.faker.lorem.sentence(),
26
- 'Message-ID': `${faker_1.faker.string.uuid()}@${faker_1.faker.internet.domainName()}`,
27
- 'From': `${faker_1.faker.person.fullName()} <${faker_1.faker.internet.email()}>`,
28
- 'To': `${faker_1.faker.person.fullName()} <${faker_1.faker.internet.email()}>`,
29
- };
30
- const headersString = Object.entries(headers).map(([key, value]) => `${key}: ${value}`).join('\r\n');
31
- const body = faker_1.faker.lorem.paragraphs(5).replace('\n', '\r\n');
32
- const full_email = `${headersString}\r\n${body}`;
33
- await node_assert_1.default.rejects(() => (0, parseMessage_1.default)(full_email));
34
- });
35
- });
@@ -1,34 +0,0 @@
1
- import { describe, it } from 'node:test';
2
- import { faker } from '@faker-js/faker';
3
- import assert from 'node:assert';
4
- import parseMessage from '../../src/parsers/parseMessage';
5
-
6
- describe('Parse Message', () => {
7
- it('Should parse valid message', async () => {
8
- const headers: Record<string, string> = {
9
- 'Subject': faker.lorem.sentence(),
10
- 'Message-ID': `${faker.string.uuid()}@${faker.internet.domainName()}`,
11
- 'From': `"${faker.person.fullName()}" <${faker.internet.email()}>`,
12
- 'To': `${faker.person.fullName()} <${faker.internet.email()}>`,
13
- };
14
- const headersString = Object.entries(headers).map(([key, value]) => `${key}: ${value}`).join('\r\n');
15
- const body = faker.lorem.paragraphs(5).replace('\n', '\r\n');
16
-
17
- const full_email = `${headersString}\r\n\r\n${body}`;
18
- assert.ok(await parseMessage(full_email));
19
- });
20
-
21
- it('Should reject invalid message divider', async () => {
22
- const headers: Record<string, string> = {
23
- 'Subject': faker.lorem.sentence(),
24
- 'Message-ID': `${faker.string.uuid()}@${faker.internet.domainName()}`,
25
- 'From': `${faker.person.fullName()} <${faker.internet.email()}>`,
26
- 'To': `${faker.person.fullName()} <${faker.internet.email()}>`,
27
- };
28
- const headersString = Object.entries(headers).map(([key, value]) => `${key}: ${value}`).join('\r\n');
29
- const body = faker.lorem.paragraphs(5).replace('\n', '\r\n');
30
-
31
- const full_email = `${headersString}\r\n${body}`;
32
- await assert.rejects(() => parseMessage(full_email));
33
- });
34
- });
package/tsconfig.json DELETED
@@ -1,16 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2024", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
4
- "module": "commonjs", /* Specify what module code is generated. */
5
- "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
6
- "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
7
- "strict": true, /* Enable all strict type-checking options. */
8
- "skipLibCheck": true, /* Skip type checking all .d.ts files. */
9
- "outDir": "./dist",
10
-
11
- },
12
- "include": [
13
- "./src/**/*",
14
- "./src/*"
15
- ]
16
- }