@effect-app/infra 2.30.4 → 2.31.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 2.31.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 2b39183: improve: Tighten Sendgrid types and enable isMultiple by default
8
+
9
+ ### Patch Changes
10
+
11
+ - 1bfc3d8: update packages
12
+ - Updated dependencies [1bfc3d8]
13
+ - effect-app@2.19.2
14
+
3
15
  ## 2.30.4
4
16
 
5
17
  ### Patch Changes
@@ -33,10 +33,15 @@ const makeSendgrid = ({
33
33
  const renderedMsg_ = render(msg);
34
34
  const renderedMsg = {
35
35
  ...renderedMsg_,
36
- subject: `${subjectPrefix}${renderedMsg_.subject}`
36
+ subject: `${subjectPrefix}${renderedMsg_.subject}`,
37
+ ...("content" in renderedMsg_ ? {
38
+ content: [...renderedMsg_.content]
39
+ } : {})
37
40
  };
38
41
  yield* _logger.InfraLogger.logDebug("Sending email").pipe(_effectApp.Effect.annotateLogs("msg", (0, _util.inspect)(renderedMsg, false, 5)));
39
- const ret = yield* _effectApp.Effect.async(cb => void _mail.default.send(renderedMsg, false, (err, result) => err ? cb(_effectApp.Effect.fail(err)) : cb(_effectApp.Effect.sync(() => result))));
42
+ const ret = yield* _effectApp.Effect.async(cb => void _mail.default.send(renderedMsg,
43
+ // sue me
44
+ msg.isMultiple ?? true, (err, result) => err ? cb(_effectApp.Effect.fail(err)) : cb(_effectApp.Effect.sync(() => result))));
40
45
  // const event = {
41
46
  // name: "EmailSent",
42
47
  // properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"Sendgrid.cjs","names":["_mail","_interopRequireDefault","require","_effectApp","_utils","_util","_logger","_service","e","__esModule","default","makeSendgrid","apiKey","defaultFrom","defaultReplyTo","realMail","subjectPrefix","Effect","sync","sgMail","setApiKey","Redacted","value","Emailer","of","sendMail","msg_","gen","msg","dropUndefinedT","from","replyTo","undefined","render","renderMessage","renderedMsg_","renderedMsg","subject","InfraLogger","logDebug","pipe","annotateLogs","inspect","ret","async","cb","send","err","result","fail","Sendgrid","config","toLayer","forceFake","i","makeId","to","renderFake","cc","bcc","renderFakeIfTest","isTestAddress","toLowerCase","endsWith","email","addr","name","renderMailData","eq","Equivalence","mapInput","string","Array","isArray","dedupeWith","map","x","md","join"],"sources":["../../src/Emailer/Sendgrid.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Sendgrid.cjs","names":["_mail","_interopRequireDefault","require","_effectApp","_utils","_util","_logger","_service","e","__esModule","default","makeSendgrid","apiKey","defaultFrom","defaultReplyTo","realMail","subjectPrefix","Effect","sync","sgMail","setApiKey","Redacted","value","Emailer","of","sendMail","msg_","gen","msg","dropUndefinedT","from","replyTo","undefined","render","renderMessage","renderedMsg_","renderedMsg","subject","content","InfraLogger","logDebug","pipe","annotateLogs","inspect","ret","async","cb","send","isMultiple","err","result","fail","Sendgrid","config","toLayer","forceFake","i","makeId","to","renderFake","cc","bcc","renderFakeIfTest","isTestAddress","toLowerCase","endsWith","email","addr","name","renderMailData","eq","Equivalence","mapInput","string","Array","isArray","dedupeWith","map","x","md","join"],"sources":["../../src/Emailer/Sendgrid.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"service.cjs","names":["_effectApp","require","Emailer","Context","TagId","exports"],"sources":["../../src/Emailer/service.ts"],"sourcesContent":[null],"mappings":";;;;;;AAIA,IAAAA,UAAA,GAAAC,OAAA;AAGA;;;;AAIM,MAAOC,OAAQ,SAAQC,kBAAO,CAACC,KAAK,CAAC,oBAAoB,CAAC,EAE5D;AAAGC,OAAA,CAAAH,OAAA,GAAAA,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"service.cjs","names":["_effectApp","require","Emailer","Context","TagId","exports"],"sources":["../../src/Emailer/service.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AAGA;;;;AAIM,MAAOC,OAAQ,SAAQC,kBAAO,CAACC,KAAK,CAAC,oBAAoB,CAAC,EAE5D;AAAGC,OAAA,CAAAH,OAAA,GAAAA,OAAA","ignoreList":[]}
@@ -1,4 +1,6 @@
1
1
  import type { EmailData } from "@sendgrid/helpers/classes/email-address.js";
2
+ import type { MailContent } from "@sendgrid/helpers/classes/mail.js";
3
+ import { Array } from "effect-app";
2
4
  import { Emailer } from "./service.js";
3
5
  import type { EmailMsg, SendgridConfig } from "./service.js";
4
6
  /**
@@ -12,13 +14,11 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
12
14
  to: EmailData | EmailData[];
13
15
  cc: EmailData | EmailData[];
14
16
  bcc: EmailData | EmailData[];
15
- from: EmailData;
16
17
  replyTo?: EmailData;
17
18
  sendAt?: number;
18
19
  subject?: string;
19
20
  text: string;
20
21
  html?: string;
21
- content?: import("@sendgrid/helpers/classes/mail.js").MailContent[];
22
22
  templateId?: string;
23
23
  personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[];
24
24
  attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
@@ -48,17 +48,16 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
48
48
  };
49
49
  hideWarnings?: boolean;
50
50
  replyToList?: import("@sendgrid/helpers/classes/email-address.js").EmailJSON | import("@sendgrid/helpers/classes/email-address.js").EmailJSON[];
51
+ from: import("./service.js").EmailData;
51
52
  } | {
52
53
  to: EmailData | EmailData[];
53
54
  cc: EmailData | EmailData[];
54
55
  bcc: EmailData | EmailData[];
55
- from: EmailData;
56
56
  replyTo?: EmailData;
57
57
  sendAt?: number;
58
58
  subject?: string;
59
59
  text?: string;
60
60
  html: string;
61
- content?: import("@sendgrid/helpers/classes/mail.js").MailContent[];
62
61
  templateId?: string;
63
62
  personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[];
64
63
  attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
@@ -88,17 +87,16 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
88
87
  };
89
88
  hideWarnings?: boolean;
90
89
  replyToList?: import("@sendgrid/helpers/classes/email-address.js").EmailJSON | import("@sendgrid/helpers/classes/email-address.js").EmailJSON[];
90
+ from: import("./service.js").EmailData;
91
91
  } | {
92
92
  to: EmailData | EmailData[];
93
93
  cc: EmailData | EmailData[];
94
94
  bcc: EmailData | EmailData[];
95
- from: EmailData;
96
95
  replyTo?: EmailData;
97
96
  sendAt?: number;
98
97
  subject?: string;
99
98
  text?: string;
100
99
  html?: string;
101
- content?: import("@sendgrid/helpers/classes/mail.js").MailContent[];
102
100
  templateId: string;
103
101
  personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[];
104
102
  attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
@@ -128,19 +126,16 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
128
126
  };
129
127
  hideWarnings?: boolean;
130
128
  replyToList?: import("@sendgrid/helpers/classes/email-address.js").EmailJSON | import("@sendgrid/helpers/classes/email-address.js").EmailJSON[];
129
+ from: import("./service.js").EmailData;
131
130
  } | {
132
131
  to: EmailData | EmailData[];
133
132
  cc: EmailData | EmailData[];
134
133
  bcc: EmailData | EmailData[];
135
- from: EmailData;
136
134
  replyTo?: EmailData;
137
135
  sendAt?: number;
138
136
  subject?: string;
139
137
  text?: string;
140
138
  html?: string;
141
- content: import("@sendgrid/helpers/classes/mail.js").MailContent[] & {
142
- 0: import("@sendgrid/helpers/classes/mail.js").MailContent;
143
- };
144
139
  templateId?: string;
145
140
  personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[];
146
141
  attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
@@ -170,6 +165,8 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
170
165
  };
171
166
  hideWarnings?: boolean;
172
167
  replyToList?: import("@sendgrid/helpers/classes/email-address.js").EmailJSON | import("@sendgrid/helpers/classes/email-address.js").EmailJSON[];
168
+ from: import("./service.js").EmailData;
169
+ content: Array.NonEmptyReadonlyArray<MailContent>;
173
170
  };
174
171
  /**
175
172
  * @hidden
@@ -1 +1 @@
1
- {"version":3,"file":"Sendgrid.d.ts","sourceRoot":"","sources":["../../src/Emailer/Sendgrid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAA;AAM3E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAwB,cAAc,EAAE,MAAM,cAAc,CAAA;AA8ClF;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,uDAE9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,OAAO,SAWpC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,WAO1C"}
1
+ {"version":3,"file":"Sendgrid.d.ts","sourceRoot":"","sources":["../../src/Emailer/Sendgrid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAA;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAEpE,OAAO,EAAE,KAAK,EAAiC,MAAM,YAAY,CAAA;AAIjE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAwB,cAAc,EAAE,MAAM,cAAc,CAAA;AAwDlF;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,uDAE9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,OAAO,SAWpC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,WAO1C"}
@@ -16,9 +16,16 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
16
16
  });
17
17
  const render = renderMessage(!realMail);
18
18
  const renderedMsg_ = render(msg);
19
- const renderedMsg = { ...renderedMsg_, subject: `${subjectPrefix}${renderedMsg_.subject}` };
19
+ const renderedMsg = {
20
+ ...renderedMsg_,
21
+ subject: `${subjectPrefix}${renderedMsg_.subject}`,
22
+ ..."content" in renderedMsg_
23
+ ? { content: [...renderedMsg_.content] }
24
+ : {}
25
+ };
20
26
  yield* InfraLogger.logDebug("Sending email").pipe(Effect.annotateLogs("msg", inspect(renderedMsg, false, 5)));
21
- const ret = yield* Effect.async((cb) => void sgMail.send(renderedMsg, false, (err, result) => err
27
+ const ret = yield* Effect.async((cb) => void sgMail.send(renderedMsg, // sue me
28
+ msg.isMultiple ?? true, (err, result) => err
22
29
  ? cb(Effect.fail(err))
23
30
  : cb(Effect.sync(() => result))));
24
31
  // const event = {
@@ -96,4 +103,4 @@ function renderMailData(md) {
96
103
  }
97
104
  return md.email;
98
105
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VuZGdyaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRW1haWxlci9TZW5kZ3JpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUd0QyxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBa0IsRUFBRSxFQUFFLENBQ3hHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO0lBQ2YsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFFeEMsT0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2hCLFFBQVEsQ0FBQyxJQUEwQjtZQUNqQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO2dCQUN6QixNQUFNLEdBQUcsR0FBYSxjQUFjLENBQUM7b0JBQ25DLEdBQUcsSUFBSTtvQkFDUCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxXQUFXO29CQUM5QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO2lCQUNsRSxDQUFDLENBQUE7Z0JBQ0YsTUFBTSxNQUFNLEdB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
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VuZGdyaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRW1haWxlci9TZW5kZ3JpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUd0QyxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBa0IsRUFBRSxFQUFFLENBQ3hHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO0lBQ2YsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFFeEMsT0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2hCLFFBQVEsQ0FBQyxJQUEwQjtZQUNqQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO2dCQUN6QixNQUFNLEdBQUcsR0FBYSxjQUFjLENBQUM7b0JBQ25DLEdBQUcsSUFBSTtvQkFDUCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxXQUFXO29CQUM5QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO2lCQUNsRSxDQUFDLENBQUE7Z0JBQ0YsTUFBTSxNQUFNLEdB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
@@ -1,9 +1,8 @@
1
1
  import type { MailContent, MailData } from "@sendgrid/helpers/classes/mail.js";
2
2
  import type { ResponseError } from "@sendgrid/mail";
3
- import type sgMail from "@sendgrid/mail";
4
3
  import type { Effect, NonEmptyReadonlyArray, Redacted } from "effect-app";
5
4
  import { Context } from "effect-app";
6
- import type { Email, NonEmptyString255 } from "effect-app/Schema";
5
+ import type { Email } from "effect-app/Schema";
7
6
  declare const Emailer_base: (abstract new (service: {
8
7
  sendMail: (msg: EmailMsgOptionalFrom) => Effect<void, Error | ResponseError>;
9
8
  }) => Readonly<{
@@ -27,24 +26,33 @@ declare const Emailer_base: (abstract new (service: {
27
26
  */
28
27
  export declare class Emailer extends Emailer_base {
29
28
  }
29
+ export type EmailData = Email | {
30
+ name?: string;
31
+ email: Email;
32
+ };
30
33
  export interface SendgridConfig {
31
- defaultReplyTo?: Email | {
32
- name?: NonEmptyString255;
33
- email: Email;
34
- };
34
+ defaultReplyTo?: EmailData;
35
35
  subjectPrefix: string;
36
36
  realMail: boolean;
37
- defaultFrom: Email | {
38
- name?: NonEmptyString255;
39
- email: Email;
40
- };
37
+ defaultFrom: EmailData;
41
38
  apiKey: Redacted.Redacted<string>;
42
39
  }
43
- export type EmailMsg = sgMail.MailDataRequired;
44
40
  export type EmailTemplateMsg = MailData & {
45
41
  templateId: string;
46
42
  };
47
- export type EmailMsgOptionalFrom = Omit<MailData, "from"> & ({
43
+ export type EmailRecipients = EmailData | NonEmptyReadonlyArray<EmailData>;
44
+ export type EmailMsgBase = Omit<MailData, "from" | "to" | "bcc" | "cc" | "content"> & {
45
+ to: EmailData | NonEmptyReadonlyArray<EmailData>;
46
+ cc?: EmailData | NonEmptyReadonlyArray<EmailData>;
47
+ bcc?: EmailData | NonEmptyReadonlyArray<EmailData>;
48
+ from: EmailData;
49
+ /**
50
+ * should multiple `to` addresess be considered multiple emails?
51
+ * defaults to `true`, not to leak email addresses
52
+ */
53
+ isMultiple?: boolean;
54
+ };
55
+ export type EmailContent = {
48
56
  text: string;
49
57
  } | {
50
58
  html: string;
@@ -52,6 +60,8 @@ export type EmailMsgOptionalFrom = Omit<MailData, "from"> & ({
52
60
  templateId: string;
53
61
  } | {
54
62
  content: NonEmptyReadonlyArray<MailContent>;
55
- }) & Partial<Pick<EmailMsg, "from">>;
63
+ };
64
+ export type EmailMsg = EmailMsgBase & EmailContent;
65
+ export type EmailMsgOptionalFrom = Omit<EmailMsgBase, "from"> & Partial<Pick<EmailMsg, "from">> & EmailContent;
56
66
  export {};
57
67
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/Emailer/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;;cAOrD,CAAC,GAAG,EAAE,oBAAoB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;cAAlE,CAAC,GAAG,EAAE,oBAAoB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;cAAlE,CAAC,GAAG,EAAE,oBAAoB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;;;;;;;;kBAAlE,CAAC,GAAG,EAAE,oBAAoB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;;AAL9E;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,YAEzB;CAAG;AAEP,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,KAAK,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAA;IACnE,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,KAAK,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAA;IAC/D,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;CAClC;AACD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAA;AAC9C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,MAAM,MAAM,oBAAoB,GAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GACtB,CACA;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAA;CAAE,CAC/G,GACC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/Emailer/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;;cAOlC,CAAC,GAAG,EAAE,oBAAoB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;cAAlE,CAAC,GAAG,EAAE,oBAAoB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;cAAlE,CAAC,GAAG,EAAE,oBAAoB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;;;;;;;;kBAAlE,CAAC,GAAG,EAAE,oBAAoB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;;AAL9E;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,YAEzB;CAAG;AAEP,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,SAAS,CAAA;IACtB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;CAClC;AACD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;AAE1E,MAAM,MAAM,YAAY,GACpB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,GACxD;IACA,EAAE,EAAE,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAChD,EAAE,CAAC,EAAE,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;IACjD,GAAG,CAAC,EAAE,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAClD,IAAI,EAAE,SAAS,CAAA;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAEH,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG;IACxF,OAAO,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,QAAQ,GAChB,YAAY,GACZ,YAAY,CAAA;AAEhB,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,CAAA"}
@@ -5,4 +5,4 @@ import { Context } from "effect-app";
5
5
  */
6
6
  export class Emailer extends Context.TagId("effect-app/Emailer")() {
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9FbWFpbGVyL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUdwQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sT0FBUSxTQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsRUFFNUQ7Q0FBRyJ9
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9FbWFpbGVyL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUdwQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sT0FBUSxTQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsRUFFNUQ7Q0FBRyJ9
@@ -15,7 +15,7 @@ export declare const toFilter: <TFieldValues extends FieldValues, A, R, TFieldVa
15
15
  key: import("../filter/types/path/eager.js").Path<TFieldValues>;
16
16
  direction: "ASC" | "DESC";
17
17
  }[]];
18
- ttype: "one" | "many" | "count";
18
+ ttype: "one" | "count" | "many";
19
19
  mode: "project" | "collect" | "transform";
20
20
  filter: FilterResult[];
21
21
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "2.30.4",
3
+ "version": "2.31.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -13,12 +13,12 @@
13
13
  "proper-lockfile": "^4.1.2",
14
14
  "pure-rand": "6.1.0",
15
15
  "query-string": "^9.1.1",
16
- "effect-app": "2.19.1"
16
+ "effect-app": "2.19.2"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@azure/cosmos": "^4.2.0",
20
20
  "@azure/service-bus": "^7.9.5",
21
- "@babel/cli": "^7.25.9",
21
+ "@babel/cli": "^7.26.4",
22
22
  "@sentry/node": "^8.42.0",
23
23
  "@types/express": "^5.0.0",
24
24
  "@types/node": "~22.10.1",
@@ -38,17 +38,17 @@
38
38
  "peerDependencies": {
39
39
  "@azure/cosmos": "^4.2.0",
40
40
  "@azure/service-bus": "^7.9.5",
41
- "@effect/experimental": "^0.33.2",
42
- "@effect/platform": "^0.70.2",
43
- "@effect/rpc-http": "^0.43.2",
44
- "@effect/rpc": "^0.45.2",
45
- "@effect/sql": "^0.22.2",
46
- "@effect/vitest": "^0.14.2",
41
+ "@effect/experimental": "^0.33.4",
42
+ "@effect/platform": "^0.70.4",
43
+ "@effect/rpc-http": "^0.43.4",
44
+ "@effect/rpc": "^0.45.4",
45
+ "@effect/sql": "^0.22.4",
46
+ "@effect/vitest": "^0.14.3",
47
47
  "@sendgrid/helpers": "^8.0.0",
48
48
  "@sendgrid/mail": "^8.1.4",
49
49
  "redis": "^3.1.2",
50
50
  "redlock": "^4.2.0",
51
- "effect": "^3.11.2",
51
+ "effect": "^3.11.3",
52
52
  "express": "^4.21.1"
53
53
  },
54
54
  "typesVersions": {
@@ -1,4 +1,5 @@
1
1
  import type { EmailData } from "@sendgrid/helpers/classes/email-address.js"
2
+ import type { MailContent } from "@sendgrid/helpers/classes/mail.js"
2
3
  import sgMail from "@sendgrid/mail"
3
4
  import { Array, Effect, Equivalence, Redacted } from "effect-app"
4
5
  import { dropUndefinedT } from "effect-app/utils"
@@ -22,7 +23,13 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
22
23
  const render = renderMessage(!realMail)
23
24
 
24
25
  const renderedMsg_ = render(msg)
25
- const renderedMsg = { ...renderedMsg_, subject: `${subjectPrefix}${renderedMsg_.subject}` }
26
+ const renderedMsg = {
27
+ ...renderedMsg_ as Omit<typeof renderedMsg_, "content">,
28
+ subject: `${subjectPrefix}${renderedMsg_.subject}`,
29
+ ..."content" in renderedMsg_
30
+ ? { content: [...renderedMsg_.content] as [MailContent, ...MailContent[]] }
31
+ : {}
32
+ }
26
33
  yield* InfraLogger.logDebug("Sending email").pipe(Effect.annotateLogs("msg", inspect(renderedMsg, false, 5)))
27
34
 
28
35
  const ret = yield* Effect.async<
@@ -30,10 +37,14 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
30
37
  Error | sgMail.ResponseError
31
38
  >(
32
39
  (cb) =>
33
- void sgMail.send(renderedMsg, false, (err, result) =>
34
- err
35
- ? cb(Effect.fail(err))
36
- : cb(Effect.sync(() => result)))
40
+ void sgMail.send(
41
+ renderedMsg as any, // sue me
42
+ msg.isMultiple ?? true,
43
+ (err, result) =>
44
+ err
45
+ ? cb(Effect.fail(err))
46
+ : cb(Effect.sync(() => result))
47
+ )
37
48
  )
38
49
 
39
50
  // const event = {
@@ -93,7 +104,7 @@ export function isTestAddress(to: EmailData) {
93
104
  )
94
105
  }
95
106
 
96
- function renderFake(addr: EmailData | EmailData[], makeId: () => number) {
107
+ function renderFake(addr: EmailData | readonly EmailData[], makeId: () => number) {
97
108
  return {
98
109
  name: renderMailData(addr),
99
110
  email: `test+${makeId()}@nomizz.com`
@@ -106,7 +117,7 @@ const eq = Equivalence.mapInput(
106
117
 
107
118
  // TODO: should just not add any already added email address
108
119
  // https://stackoverflow.com/a/53603076/11595834
109
- function renderFakeIfTest(addr: EmailData | EmailData[], makeId: () => number) {
120
+ function renderFakeIfTest(addr: EmailData | readonly EmailData[], makeId: () => number) {
110
121
  return Array.isArray(addr)
111
122
  ? Array.dedupeWith(
112
123
  addr
@@ -118,7 +129,7 @@ function renderFakeIfTest(addr: EmailData | EmailData[], makeId: () => number) {
118
129
  : addr
119
130
  }
120
131
 
121
- function renderMailData(md: NonNullable<EmailMsg["to"]>): string {
132
+ function renderMailData(md: EmailData | readonly EmailData[]): string {
122
133
  if (Array.isArray(md)) {
123
134
  return md.map(renderMailData).join(", ")
124
135
  }
@@ -1,9 +1,8 @@
1
1
  import type { MailContent, MailData } from "@sendgrid/helpers/classes/mail.js"
2
2
  import type { ResponseError } from "@sendgrid/mail"
3
- import type sgMail from "@sendgrid/mail"
4
3
  import type { Effect, NonEmptyReadonlyArray, Redacted } from "effect-app"
5
4
  import { Context } from "effect-app"
6
- import type { Email, NonEmptyString255 } from "effect-app/Schema"
5
+ import type { Email } from "effect-app/Schema"
7
6
 
8
7
  /**
9
8
  * @tsplus type Emailer
@@ -13,19 +12,42 @@ export class Emailer extends Context.TagId("effect-app/Emailer")<Emailer, {
13
12
  sendMail: (msg: EmailMsgOptionalFrom) => Effect<void, Error | ResponseError>
14
13
  }>() {}
15
14
 
15
+ export type EmailData = Email | {
16
+ name?: string
17
+ email: Email
18
+ }
19
+
16
20
  export interface SendgridConfig {
17
- defaultReplyTo?: Email | { name?: NonEmptyString255; email: Email }
21
+ defaultReplyTo?: EmailData
18
22
  subjectPrefix: string
19
23
  realMail: boolean
20
- defaultFrom: Email | { name?: NonEmptyString255; email: Email }
24
+ defaultFrom: EmailData
21
25
  apiKey: Redacted.Redacted<string>
22
26
  }
23
- export type EmailMsg = sgMail.MailDataRequired
24
27
  export type EmailTemplateMsg = MailData & { templateId: string }
25
28
 
26
- export type EmailMsgOptionalFrom =
27
- & Omit<MailData, "from">
28
- & (
29
- { text: string } | { html: string } | { templateId: string } | { content: NonEmptyReadonlyArray<MailContent> }
30
- )
31
- & Partial<Pick<EmailMsg, "from">>
29
+ export type EmailRecipients = EmailData | NonEmptyReadonlyArray<EmailData>
30
+
31
+ export type EmailMsgBase =
32
+ & Omit<MailData, "from" | "to" | "bcc" | "cc" | "content">
33
+ & {
34
+ to: EmailData | NonEmptyReadonlyArray<EmailData>
35
+ cc?: EmailData | NonEmptyReadonlyArray<EmailData>
36
+ bcc?: EmailData | NonEmptyReadonlyArray<EmailData>
37
+ from: EmailData
38
+ /**
39
+ * should multiple `to` addresess be considered multiple emails?
40
+ * defaults to `true`, not to leak email addresses
41
+ */
42
+ isMultiple?: boolean
43
+ }
44
+
45
+ export type EmailContent = { text: string } | { html: string } | { templateId: string } | {
46
+ content: NonEmptyReadonlyArray<MailContent>
47
+ }
48
+
49
+ export type EmailMsg =
50
+ & EmailMsgBase
51
+ & EmailContent
52
+
53
+ export type EmailMsgOptionalFrom = Omit<EmailMsgBase, "from"> & Partial<Pick<EmailMsg, "from">> & EmailContent
@@ -1,10 +1,9 @@
1
1
  /* eslint-disable @typescript-eslint/no-unsafe-member-access */
2
- import { makeMiddleware, makeRouter } from "@effect-app/infra/api/routing";
3
2
  import { Rpc } from "@effect/rpc";
4
3
  import { Context, Effect, FiberRef, Layer, S, Schedule } from "effect-app";
5
4
  import { makeRpcClient, UnauthorizedError } from "effect-app/client";
6
5
  import { HttpHeaders, HttpServerRequest } from "effect-app/http";
7
- import { it } from "vitest";
6
+ import { makeMiddleware, makeRouter } from "../src/api/routing5.js";
8
7
  const optimisticConcurrencySchedule = Schedule.once
9
8
  && Schedule.recurWhile((a) => a?._tag === "OptimisticConcurrencyException");
10
9
  const middleware = makeMiddleware({
@@ -12,11 +11,11 @@ const middleware = makeMiddleware({
12
11
  // helper to deal with nested generic lmitations
13
12
  context: null,
14
13
  execute: Effect.gen(function* () {
15
- return (_schema, handler, moduleName) => (req) => Effect
14
+ return (schema, handler, moduleName) => (req) => Effect
16
15
  .gen(function* () {
17
- // const headers = yield* Rpc.currentHeaders
16
+ const headers = yield* Rpc.currentHeaders;
18
17
  const ctx = Context.empty();
19
- // const config = "config" in schema ? schema.config : undefined
18
+ const config = "config" in schema ? schema.config : undefined;
20
19
  // Check JWT
21
20
  // TODO
22
21
  // if (!fakeLogin && !request.allowAnonymous) {
@@ -93,11 +92,11 @@ export class SomethingService extends Effect.Service()("SomethingService", {
93
92
  })
94
93
  }) {
95
94
  }
95
+ const c = a({ a: 5 });
96
96
  export class SomethingRepo extends Effect.Service()("SomethingRepo", {
97
97
  dependencies: [SomethingService.Default],
98
98
  effect: Effect.gen(function* () {
99
99
  const smth = yield* SomethingService;
100
- console.log({ smth });
101
100
  return {};
102
101
  })
103
102
  }) {
@@ -109,44 +108,22 @@ export class SomethingService2 extends Effect.Service()("SomethingService2", {
109
108
  })
110
109
  }) {
111
110
  }
112
- it("router", () => {
113
- const routes = matchFor(Something)({
114
- dependencies: [
115
- SomethingRepo.Default,
116
- SomethingService.Default,
117
- SomethingService2.Default
118
- ],
119
- effect: Effect.gen(function* () {
120
- const repo = yield* SomethingRepo;
121
- const smth = yield* SomethingService;
122
- const smth2 = yield* SomethingService2;
123
- console.log({ repo, smth, smth2 });
124
- const { GetSomething, GetSomethingElse, router } = matchFor(Something);
125
- return router
126
- .add(GetSomething(() => Effect.void))
127
- .add(GetSomethingElse(Effect.succeed("12")));
128
- })
129
- });
130
- console.log({ routes });
131
- });
132
- it("router2", () => {
133
- const routes2 = matchFor(Something)({
134
- dependencies: [
135
- SomethingRepo.Default,
136
- SomethingService.Default,
137
- SomethingService2.Default
138
- ],
139
- effect: Effect.gen(function* () {
140
- const repo = yield* SomethingRepo;
141
- const smth = yield* SomethingService;
142
- const smth2 = yield* SomethingService2;
143
- console.log({ repo, smth, smth2 });
144
- const { router2 } = matchFor(Something);
145
- return router2
146
- .GetSomething(() => Effect.void)
147
- .GetSomethingElse(Effect.succeed("12"));
148
- })
149
- });
150
- console.log({ routes2 });
111
+ const { handle, routes } = matchFor(Something);
112
+ const d = handle({
113
+ dependencies: [
114
+ SomethingRepo.Default,
115
+ SomethingService.Default
116
+ // SomethingService2.Default
117
+ ],
118
+ effect: Effect.gen(function* () {
119
+ const repo = yield* SomethingRepo;
120
+ const smth = yield* SomethingService;
121
+ const smth2 = yield* SomethingService2;
122
+ const { GetSomething, GetSomethingElse } = routes;
123
+ return {
124
+ GetSomething: GetSomething(Effect.void),
125
+ GetSomethingElse: GetSomethingElse(Effect.succeed("12"))
126
+ };
127
+ })
151
128
  });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci50ZXN0IGNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9jb250cm9sbGVyLnRlc3QgY29weS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrREFBK0Q7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUUxRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRWpDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMxRSxPQUFPLEVBQXlCLGFBQWEsRUFBc0IsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvRyxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFaEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUUzQixNQUFNLDZCQUE2QixHQUFHLFFBQVEsQ0FBQyxJQUFJO09BQzlDLFFBQVEsQ0FBQyxVQUFVLENBQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssZ0NBQWdDLENBQUMsQ0FBQTtBQVdsRixNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDaEMsVUFBVSxFQUFFLElBQXlCO0lBQ3JDLGdEQUFnRDtJQUNoRCxPQUFPLEVBQUUsSUFBa0Q7SUFDM0QsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzNCLE9BQU8sQ0FDTCxPQUFzQyxFQUN0QyxPQUFpSCxFQUNqSCxVQUFtQixFQUNuQixFQUFFLENBQ0osQ0FDRSxHQUFRLEVBTVIsRUFBRSxDQUNGLE1BQU07YUFDSCxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ1osNENBQTRDO1lBQzVDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFL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
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci50ZXN0IGNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9jb250cm9sbGVyLnRlc3QgY29weS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrREFBK0Q7QUFDL0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDMUUsT0FBTyxFQUF5QixhQUFhLEVBQXNCLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDL0csT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFHbkUsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQUMsSUFBSTtPQUM5QyxRQUFRLENBQUMsVUFBVSxDQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLGdDQUFnQyxDQUFDLENBQUE7QUFXbEYsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDO0lBQ2hDLFVBQVUsRUFBRSxJQUF5QjtJQUNyQyxnREFBZ0Q7SUFDaEQsT0FBTyxFQUFFLElBQWtEO0lBQzNELE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUMzQixPQUFPLENBQ0wsTUFBcUMsRUFDckMsT0FBaUgsRUFDakgsVUFBbUIsRUFDbkIsRUFBRSxDQUNKLENBQ0UsR0FBUSxFQU1SLEVBQUUsQ0FDRixNQUFNO2FBQ0gsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNaLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUE7WUFDekMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller5.test.d.ts","sourceRoot":"","sources":["../controller5.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAI/G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAK9D,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ,OAAE,QAAQ,KAAiC,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;2CAvElB,MACZ,CA8BO,MA9BA;mBAEqB,MAC9B,CA2BS,GA3BL,KA2BK,MA3BM,CAAC,MAAM;mBACR,MAAK,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CA0BhC,MAjBD,CAiBC,MAjBM;mBAiBN,MAhBI,CAgBJ,GAhBQ,KAAK,MAAM,CAAC,MAAM;;;;;;6CAUT,MAAM,CAAC,MAAM;mBAAuC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MACjG;;;;;;6CAciB,MAAM,CAAC,MAAM;;;;;6CAMF,MAAM,CAAC,MAAM;;;CA4B3C,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;AAEL,eAAO,MAAM,MAAM,KAmBjB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"controller6.test.d.ts","sourceRoot":"","sources":["../controller6.test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAGtE,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAQ/G,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ,OAAE,QAAQ,KAAiC,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;2CAxEK,MAAM,CAAC,MAAM;mBAgCzC,MA9BD,CA8BC,GA9BG,KA8BH,MA5BF,CA4BE,MA5BK;mBA4BL,MA3BA,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CASqB,MAAM,CAAC,MAAM;mBACvD,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CAUpB,MAAM,CAAC,MAAM;mBACG,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CAcjD,MAAE,CAAC,MAAM;;;;;6CAMwC,MAAM,CAAC,MACrE;;;;;CA4BC,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG"}
1
+ {"version":3,"file":"controller6.test.d.ts","sourceRoot":"","sources":["../controller6.test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC/G,OAAO,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAOhE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ;;;;;gBA0EqxD,MAAO,KAAK;;;;;;GA1E/xD,QAAQ;;;;;;iDA0E01F,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAk0D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAk0D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAk0D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAA6xD,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CA1EvmU,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;yCAxEE,EAAG,MAAM,CAAC,MAAM;iBAgCzC,EAAA,MA9BD,CA8BC,GA9BG,GA8BH,EAAA,MA5BF,CA4BE,MA5BK;iBA4BL,EAAA,MA3BA,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CASkB,EAAG,MAAM,CAAC,MAAM;iBAkBxD,EAjBC,MAAM,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CAUtB,EAAE,MAAM,CAAC,MAAM;iBACA,EAAG,MAAM,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CAcjD,EAAA,MAAE,CAAC,MAAM;;;;;2CAMqC,EAAG,MAAM,CAAC,MACrE;;;;;CA4BC,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"controller7.test.d.ts","sourceRoot":"","sources":["../controller7.test.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAGtE,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAQ/G,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,MAAM,OAAE,QAAQ,OAAE,QAAQ,KAAiC,CAAA;AAE1E,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;2CAxCvB,MAjCD,CAiCC,MAjCM;mBACgB,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;mBAgClD,MA9BJ,CA8BI,GA9BA,KA8BA,MA5BL,CA4BK,MA5BE;;;;;;6CASC,MACV,CAkBO,MAlBA;mBAAuC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CAkBnE,MATE,CASF,MATS;mBAEF,MAAI,CAAC,GAAG,KAAK,MAC9B,CAMU,MANH;;;;;;6CAYG,MAAL,CAAK,MAAE;;;;;6CAQI,MAAH,CAAG,MAAI;;;;;CA6BlB,CAAA;;;;;;;;;;AAEF,qBAAa,WAAY,SAAQ,gBAEV;CAAG;;;;;;;;;;AAE1B,qBAAa,YAAa,SAAQ,iBAET;CAAG;;;;;;;;;;AAE5B,qBAAa,aAAc,SAAQ,kBAEA;CAAG;;;;;AAItC,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;;AA0BL,wBAmBE;AAEF,eAAO,MAAM,OAAO,KAmBlB,CAAA"}
1
+ {"version":3,"file":"controller7.test.d.ts","sourceRoot":"","sources":["../controller7.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ // packages/infra/vitest.config.ts
2
+ import { defineConfig } from "file:///Users/patrickroza/pj/effect-app/libs/node_modules/.pnpm/vite@5.2.6_@types+node@20.11.30/node_modules/vite/dist/node/index.js";
3
+
4
+ // vite.config.base.ts
5
+ import path from "path";
6
+ import fs from "fs";
7
+ var __vite_injected_original_dirname = "/Users/patrickroza/pj/effect-app/libs";
8
+ function makeConfig(dirName) {
9
+ const prefix = path.resolve(__vite_injected_original_dirname, "packages");
10
+ const packages = fs.readdirSync(prefix).map((f) => prefix + "/" + f).filter((f) => fs.lstatSync(f).isDirectory());
11
+ const cfg = {
12
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
13
+ //plugins: [autoImport],
14
+ test: {
15
+ include: ["./test/**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
16
+ reporters: "verbose",
17
+ globals: true
18
+ },
19
+ resolve: {
20
+ alias: packages.reduce((acc, cur) => {
21
+ acc[JSON.parse(fs.readFileSync(cur + "/package.json", "utf-8")).name] = path.resolve(cur, cur.endsWith("core") ? "dist" : "src");
22
+ return acc;
23
+ }, {})
24
+ // "@effect-app/core/Prelude": path.join(__dirname, "packages/core/src/Prelude.code.ts")
25
+ }
26
+ };
27
+ console.log(cfg);
28
+ return cfg;
29
+ }
30
+
31
+ // packages/infra/vitest.config.ts
32
+ var __vite_injected_original_dirname2 = "/Users/patrickroza/pj/effect-app/libs/packages/infra";
33
+ var vitest_config_default = defineConfig(makeConfig(__vite_injected_original_dirname2));
34
+ export {
35
+ vitest_config_default as default
36
+ };
37
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFja2FnZXMvaW5mcmEvdml0ZXN0LmNvbmZpZy50cyIsICJ2aXRlLmNvbmZpZy5iYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlicy9wYWNrYWdlcy9pbmZyYVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlicy9wYWNrYWdlcy9pbmZyYS92aXRlc3QuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvaW5mcmEvdml0ZXN0LmNvbmZpZy50c1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlXCJcbmltcG9ydCBtYWtlQ29uZmlnIGZyb20gXCIuLi8uLi92aXRlLmNvbmZpZy5iYXNlXCJcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKG1ha2VDb25maWcoX19kaXJuYW1lKSlcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlic1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlicy92aXRlLmNvbmZpZy5iYXNlLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvdml0ZS5jb25maWcuYmFzZS50c1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCBmcyBmcm9tIFwiZnNcIlxuaW1wb3J0IEF1dG9JbXBvcnQgZnJvbSBcInVucGx1Z2luLWF1dG8taW1wb3J0L3ZpdGVcIlxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInZpdGVzdC9jb25maWdcIlxuXG4vLyBjb25zdCBhdXRvSW1wb3J0ID0gQXV0b0ltcG9ydCh7XG4vLyAgIGR0czogXCIuL3Rlc3QvYXV0by1pbXBvcnRzLmQudHNcIixcbi8vICAgLy8gaW5jbHVkZTogW1xuLy8gICAvLyAgIC9cXC50ZXN0XFwuW3RqXXN4PyQvIC8vIC50cywgLnRzeCwgLmpzLCAuanN4XG4vLyAgIC8vIF0sXG4vLyAgIGltcG9ydHM6IFtcbi8vICAgICBcInZpdGVzdFwiXG4vLyAgIF1cbi8vIH0pXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1ha2VDb25maWcoZGlyTmFtZT86IHN0cmluZykge1xuICBjb25zdCBwcmVmaXggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcInBhY2thZ2VzXCIpXG4gIGNvbnN0IHBhY2thZ2VzID0gZnMucmVhZGRpclN5bmMocHJlZml4KS5tYXAoZiA9PiBwcmVmaXggKyBcIi9cIiArIGYpLmZpbHRlcihmID0+IGZzLmxzdGF0U3luYyhmKS5pc0RpcmVjdG9yeSgpIClcbiAgY29uc3QgY2ZnID0ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgLy9wbHVnaW5zOiBbYXV0b0ltcG9ydF0sXG4gICAgdGVzdDoge1xuICAgICAgaW5jbHVkZTogIFtcIi4vdGVzdC8qKi8qLnRlc3Que2pzLG1qcyxjanMsdHMsbXRzLGN0cyxqc3gsdHN4fVwiXSxcbiAgICAgIHJlcG9ydGVyczogXCJ2ZXJib3NlXCIsXG4gICAgICBnbG9iYWxzOiB0cnVlXG4gICAgfSxcbiAgICByZXNvbHZlOiB7XG4gICAgICBhbGlhczogcGFja2FnZXMucmVkdWNlKChhY2MsIGN1cikgPT4geyAvLyB3b3JrYXJvdW5kIGZvciAvUHJlbHVkZSBpc3N1ZVxuICAgICAgYWNjW0pTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGN1ciArIFwiL3BhY2thZ2UuanNvblwiLCBcInV0Zi04XCIpKS5uYW1lXSA9IHBhdGgucmVzb2x2ZShjdXIsIGN1ci5lbmRzV2l0aChcImNvcmVcIikgPyBcImRpc3RcIiA6IFwic3JjXCIpXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSwgeyB9KSAvLyBcIkBlZmZlY3QtYXBwL2NvcmUvUHJlbHVkZVwiOiBwYXRoLmpvaW4oX19kaXJuYW1lLCBcInBhY2thZ2VzL2NvcmUvc3JjL1ByZWx1ZGUuY29kZS50c1wiKVxuICB9XG4gIH1cbiAgY29uc29sZS5sb2coY2ZnKVxuICByZXR1cm4gY2ZnXG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQ0EsU0FBUyxvQkFBb0I7OztBQ0E3QixPQUFPLFVBQVU7QUFDakIsT0FBTyxRQUFRO0FBRmYsSUFBTSxtQ0FBbUM7QUFnQjFCLFNBQVIsV0FBNEIsU0FBa0I7QUFDbkQsUUFBTSxTQUFTLEtBQUssUUFBUSxrQ0FBVyxVQUFVO0FBQ2pELFFBQU0sV0FBVyxHQUFHLFlBQVksTUFBTSxFQUFFLElBQUksT0FBSyxTQUFTLE1BQU0sQ0FBQyxFQUFFLE9BQU8sT0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFLFlBQVksQ0FBRTtBQUM3RyxRQUFNLE1BQU07QUFBQTtBQUFBO0FBQUEsSUFHVixNQUFNO0FBQUEsTUFDSixTQUFVLENBQUMsa0RBQWtEO0FBQUEsTUFDN0QsV0FBVztBQUFBLE1BQ1gsU0FBUztBQUFBLElBQ1g7QUFBQSxJQUNBLFNBQVM7QUFBQSxNQUNQLE9BQU8sU0FBUyxPQUFPLENBQUMsS0FBSyxRQUFRO0FBQ3JDLFlBQUksS0FBSyxNQUFNLEdBQUcsYUFBYSxNQUFNLGlCQUFpQixPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksS0FBSyxRQUFRLEtBQUssSUFBSSxTQUFTLE1BQU0sSUFBSSxTQUFTLEtBQUs7QUFDL0gsZUFBTztBQUFBLE1BQ1QsR0FBRyxDQUFFLENBQUM7QUFBQTtBQUFBLElBQ1I7QUFBQSxFQUNBO0FBQ0EsVUFBUSxJQUFJLEdBQUc7QUFDZixTQUFPO0FBQ1Q7OztBRHBDQSxJQUFNQSxvQ0FBbUM7QUFJekMsSUFBTyx3QkFBUSxhQUFhLFdBQVdDLGlDQUFTLENBQUM7IiwKICAibmFtZXMiOiBbIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIiwgIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIl0KfQo=
@@ -1,169 +0,0 @@
1
- import type { RequestContext } from "@effect-app/infra/RequestContext";
2
- import { Rpc } from "@effect/rpc";
3
- import { Effect, Layer, S } from "effect-app";
4
- import { type RPCContextMap, UnauthorizedError } from "effect-app/client";
5
- import { HttpServerRequest } from "effect-app/http";
6
- export interface CTX {
7
- context: RequestContext;
8
- }
9
- export type CTXMap = {
10
- requireRoles: RPCContextMap.Custom<"", never, typeof UnauthorizedError, Array<string>>;
11
- };
12
- export declare const matchAll: <T extends {
13
- [key: string]: {
14
- Router: {
15
- router: Effect<import("@effect/platform/HttpRouter").HttpRouter<any, any>, any, any>;
16
- };
17
- routes: Layer.Layer<any, any, any>;
18
- moduleName: string;
19
- };
20
- }, A, E, R>(handlers: T, requestLayer: Layer.Layer<A, E, R>) => {
21
- layer: Layer.Layer<never, Layer.Layer.Error<T[keyof T]["routes"]>, Layer.Layer.Context<T[keyof T]["routes"]>>;
22
- Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<"RootRouter", "RootRouter", Effect.Effect.Success<T[keyof T]["Router"]["router"]> extends infer T_1 ? T_1 extends T_1 & Effect.Effect.Success<T[keyof T]["Router"]["router"]> ? T_1 extends import("@effect/platform/HttpRouter").HttpRouter<infer E_1, any> ? E_1 : never : never : never, R | Exclude<Effect.Effect.Success<T[keyof T]["Router"]["router"]> extends infer T_2 ? T_2 extends T_2 & Effect.Effect.Success<T[keyof T]["Router"]["router"]> ? T_2 extends import("@effect/platform/HttpRouter").HttpRouter<any, infer R_1> ? R_1 : never : never : never, A>>;
23
- }, matchFor: <const ModuleName extends string, const Rsc extends Record<string, any>>(rsc: Rsc & {
24
- meta: {
25
- moduleName: ModuleName;
26
- };
27
- }) => {
28
- <const Make extends {
29
- dependencies: import("effect-app").Array<Layer.Layer.Any>;
30
- effect: Effect<{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K_1], any, any>; }, any, Make["strict"] extends false ? any : Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
31
- strict?: boolean;
32
- readonly ಠ_ಠ: never;
33
- }>(make: Make): {
34
- moduleName: ModuleName;
35
- Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_2 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_2], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_2]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
36
- routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
37
- };
38
- <const Make extends {
39
- dependencies: import("effect-app").Array<Layer.Layer.Any>;
40
- effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, Make["strict"] extends false ? any : Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
41
- strict?: boolean;
42
- readonly ಠ_ಠ: never;
43
- }>(make: Make): {
44
- moduleName: ModuleName;
45
- Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_1], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_1]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
46
- routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
47
- };
48
- <const Make extends {
49
- dependencies: import("effect-app").Array<Layer.Layer.Any>;
50
- effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, Make["strict"] extends false ? any : Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
51
- strict?: boolean;
52
- readonly ಠ_ಠ: never;
53
- }>(make: Make): {
54
- moduleName: ModuleName;
55
- Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_1], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_1]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
56
- routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
57
- };
58
- <const Make extends {
59
- dependencies: import("effect-app").Array<Layer.Layer.Any>;
60
- effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
61
- strict?: boolean;
62
- readonly ಠ_ಠ: never;
63
- }>(make: Make): {
64
- moduleName: ModuleName;
65
- Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_1], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_1]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
66
- routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
67
- };
68
- <const Make extends {
69
- dependencies: import("effect-app").Array<Layer.Layer.Any>;
70
- effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
71
- strict?: boolean;
72
- }>(make: Make): {
73
- moduleName: ModuleName;
74
- Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_1], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_1]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
75
- routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
76
- };
77
- <const Make extends {
78
- dependencies: [...Make["dependencies"], ...Exclude<Effect.Effect.Context<Make["effect"]>, import("effect/Types").Contravariant.Type<import("@effect-app/infra/api/routing").MakeDeps<Make>[typeof Layer.LayerTypeId]["_ROut"]>> extends never ? [] : [Layer.Layer<Exclude<Effect.Effect.Context<Make["effect"]>, import("effect/Types").Contravariant.Type<import("@effect-app/infra/api/routing").MakeDeps<Make>[typeof Layer.LayerTypeId]["_ROut"]>>, never, never>]];
79
- effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, any>;
80
- strict?: boolean;
81
- }>(make: Make): {
82
- moduleName: ModuleName;
83
- Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, never>;
84
- routes: any;
85
- };
86
- } & import("@effect-app/infra/api/routing").RouteMatcher<CTXMap, Rsc, HttpServerRequest.HttpServerRequest> & {
87
- router: import("@effect-app/infra/api/routing").AddAction<{ [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }], {}>;
88
- router2: { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; } extends infer T extends Record<string, import("@effect-app/infra/api/routing").AnyRequestModule> ? { [K in keyof T]: import("@effect-app/infra/api/routing").Method<{ [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }, K, "d", {}>; } : never;
89
- };
90
- export type RequestConfig = {
91
- /** Disable authentication requirement */
92
- allowAnonymous?: true;
93
- /** Control the roles that are required to access the resource */
94
- allowRoles?: readonly string[];
95
- };
96
- export declare const Req: <Self>() => {
97
- <Tag extends string, Payload extends S.Struct.Fields, C extends {
98
- success: S.Schema.Any | S.Struct.Fields;
99
- failure: S.Schema.Any | S.Struct.Fields;
100
- }>(tag: Tag, fields: Payload, config: RequestConfig & C): S.TaggedRequestClass<Self, Tag, {
101
- readonly _tag: S.tag<Tag>;
102
- } & Payload, (RequestConfig & C)["success"] extends infer T ? T extends (RequestConfig & C)["success"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never, ([((RequestConfig & C)["failure"] extends infer T_1 ? T_1 extends (RequestConfig & C)["failure"] ? T_1 extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C>] extends [never] ? [] : [((RequestConfig & C)["failure"] extends infer T_1 ? T_1 extends (RequestConfig & C)["failure"] ? T_1 extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C>]) extends infer T_2 ? T_2 extends ([((RequestConfig & C)["failure"] extends infer T_1 ? T_1 extends (RequestConfig & C)["failure"] ? T_1 extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C>] extends [never] ? [] : [((RequestConfig & C)["failure"] extends infer T_1 ? T_1 extends (RequestConfig & C)["failure"] ? T_1 extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C>]) ? T_2 extends readonly S.Schema.All[] ? S.Union<T_2> : typeof S.Never : never : never> & {
103
- config: Omit<C, "success" | "failure">;
104
- };
105
- <Tag extends string, Payload_1 extends S.Struct.Fields, C_1 extends {
106
- success: S.Schema.Any | S.Struct.Fields;
107
- }>(tag: Tag, fields: Payload_1, config: RequestConfig & C_1): S.TaggedRequestClass<Self, Tag, {
108
- readonly _tag: S.tag<Tag>;
109
- } & Payload_1, (RequestConfig & C_1)["success"] extends infer T ? T extends (RequestConfig & C_1)["success"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never, ([import("effect-app/client").GetEffectError<CTXMap, C_1>] extends [never] ? [] : [import("effect-app/client").GetEffectError<CTXMap, C_1>]) extends infer T_1 ? T_1 extends ([import("effect-app/client").GetEffectError<CTXMap, C_1>] extends [never] ? [] : [import("effect-app/client").GetEffectError<CTXMap, C_1>]) ? T_1 extends readonly S.Schema.All[] ? S.Union<T_1> : typeof S.Never : never : never> & {
110
- config: Omit<C_1, "success" | "failure">;
111
- };
112
- <Tag extends string, Payload_2 extends S.Struct.Fields, C_2 extends {
113
- failure: S.Schema.Any | S.Struct.Fields;
114
- }>(tag: Tag, fields: Payload_2, config: RequestConfig & C_2): S.TaggedRequestClass<Self, Tag, {
115
- readonly _tag: S.tag<Tag>;
116
- } & Payload_2, typeof S.Void, ([((RequestConfig & C_2)["failure"] extends infer T ? T extends (RequestConfig & C_2)["failure"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C_2>] extends [never] ? [] : [((RequestConfig & C_2)["failure"] extends infer T ? T extends (RequestConfig & C_2)["failure"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C_2>]) extends infer T_1 ? T_1 extends ([((RequestConfig & C_2)["failure"] extends infer T ? T extends (RequestConfig & C_2)["failure"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C_2>] extends [never] ? [] : [((RequestConfig & C_2)["failure"] extends infer T ? T extends (RequestConfig & C_2)["failure"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C_2>]) ? T_1 extends readonly S.Schema.All[] ? S.Union<T_1> : typeof S.Never : never : never> & {
117
- config: Omit<C_2, "success" | "failure">;
118
- };
119
- <Tag extends string, Payload_3 extends S.Struct.Fields, C_3 extends Record<string, any>>(tag: Tag, fields: Payload_3, config: C_3 & RequestConfig): S.TaggedRequestClass<Self, Tag, {
120
- readonly _tag: S.tag<Tag>;
121
- } & Payload_3, typeof S.Void, ([import("effect-app/client").GetEffectError<CTXMap, C_3>] extends [never] ? [] : [import("effect-app/client").GetEffectError<CTXMap, C_3>]) extends infer T ? T extends ([import("effect-app/client").GetEffectError<CTXMap, C_3>] extends [never] ? [] : [import("effect-app/client").GetEffectError<CTXMap, C_3>]) ? T extends readonly S.Schema.All[] ? S.Union<T> : typeof S.Never : never : never> & {
122
- config: Omit<C_3, "success" | "failure">;
123
- };
124
- <Tag extends string, Payload_4 extends S.Struct.Fields>(tag: Tag, fields: Payload_4): S.TaggedRequestClass<Self, Tag, {
125
- readonly _tag: S.tag<Tag>;
126
- } & Payload_4, typeof S.Void, never>;
127
- };
128
- declare const GetSomething_base: S.TaggedRequestClass<GetSomething, "GetSomething", {
129
- readonly _tag: S.tag<"GetSomething">;
130
- } & {
131
- id: typeof S.String;
132
- }, typeof S.Void, S.Union<[typeof UnauthorizedError]>> & {
133
- config: Omit<{
134
- success: typeof S.Void;
135
- }, "success" | "failure">;
136
- };
137
- export declare class GetSomething extends GetSomething_base {
138
- }
139
- declare const GetSomethingElse_base: S.TaggedRequestClass<GetSomethingElse, "GetSomethingElse", {
140
- readonly _tag: S.tag<"GetSomethingElse">;
141
- } & {
142
- id: typeof S.String;
143
- }, typeof S.String, S.Union<[typeof UnauthorizedError]>> & {
144
- config: Omit<{
145
- success: typeof S.String;
146
- }, "success" | "failure">;
147
- };
148
- export declare class GetSomethingElse extends GetSomethingElse_base {
149
- }
150
- declare const SomethingService_base: import("effect/Effect").Service.Class<SomethingService, "SomethingService", {
151
- readonly dependencies: readonly [];
152
- readonly effect: Effect.Effect<{}, never, never>;
153
- }>;
154
- export declare class SomethingService extends SomethingService_base {
155
- }
156
- declare const SomethingRepo_base: import("effect/Effect").Service.Class<SomethingRepo, "SomethingRepo", {
157
- readonly dependencies: readonly [Layer.Layer<SomethingService, never, never>];
158
- readonly effect: Effect.Effect<{}, never, SomethingService>;
159
- }>;
160
- export declare class SomethingRepo extends SomethingRepo_base {
161
- }
162
- declare const SomethingService2_base: import("effect/Effect").Service.Class<SomethingService2, "SomethingService2", {
163
- readonly dependencies: readonly [];
164
- readonly effect: Effect.Effect<{}, never, never>;
165
- }>;
166
- export declare class SomethingService2 extends SomethingService2_base {
167
- }
168
- export {};
169
- //# sourceMappingURL=controller.test%20copy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller.test copy.d.ts","sourceRoot":"","sources":["../controller.test copy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC/G,OAAO,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAOhE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ;;;;;sBA2DnB,KACH;;;;;;GA5DwB,QAAQ;;;;;;uDAmG8B,KAAK,CAAC,GAAG;;;;;;;;;;uDAAkyD,KAAK,CAAC,GAAG;;;;;;;;;;uDAAkyD,KAAK,CAAC,GAAG;;;;;;;;;;uDAAkyD,KAAK,CAAC,GAAG;;;;;;;;;;uDAA6vD,KAAK,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;CAnG7oO,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;2CAxEM,MAAM,CAAC,MAAM;mBAgC1C,MA9BA,CAAC,GAAG,KA8BJ,MA5BD,CA4BC,MA5BM;mBA4BN,MA3BC,CAAE,GAAE,KAAM,MAAK,CAAC,MAAM;;;;;;6CASqB,MAAM,CAAC,MAAM;mBACtD,MAAK,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CAUpB,MAAM,CAAC,MAAM;mBACG,MAAM,CAAC,GAAG,KAAK,MAAM,CAAE,MAAK;;;;;;6CAclD,MAAG,CAAC,MAAM;;;;;6CAMwC,MAAM,CAAC,MACrE;;;CA4BA,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG"}