@luma-layered-ts/types 0.0.0-dev.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 (49) hide show
  1. package/lib/display-text.d.ts +9 -0
  2. package/lib/display-text.d.ts.map +1 -0
  3. package/lib/display-text.js +3 -0
  4. package/lib/display-text.js.map +1 -0
  5. package/lib/index.d.ts +13 -0
  6. package/lib/index.d.ts.map +1 -0
  7. package/lib/index.js +12 -0
  8. package/lib/index.js.map +1 -0
  9. package/lib/json-value.d.ts +19 -0
  10. package/lib/json-value.d.ts.map +1 -0
  11. package/lib/json-value.js +2 -0
  12. package/lib/json-value.js.map +1 -0
  13. package/lib/strict-readonly-map.d.ts +17 -0
  14. package/lib/strict-readonly-map.d.ts.map +1 -0
  15. package/lib/strict-readonly-map.js +16 -0
  16. package/lib/strict-readonly-map.js.map +1 -0
  17. package/lib/strict-readonly-set.d.ts +15 -0
  18. package/lib/strict-readonly-set.d.ts.map +1 -0
  19. package/lib/strict-readonly-set.js +14 -0
  20. package/lib/strict-readonly-set.js.map +1 -0
  21. package/lib/time/internal.d.ts +5 -0
  22. package/lib/time/internal.d.ts.map +1 -0
  23. package/lib/time/internal.js +14 -0
  24. package/lib/time/internal.js.map +1 -0
  25. package/lib/time/period.d.ts +29 -0
  26. package/lib/time/period.d.ts.map +1 -0
  27. package/lib/time/period.js +51 -0
  28. package/lib/time/period.js.map +1 -0
  29. package/lib/time/plain-date-time.d.ts +34 -0
  30. package/lib/time/plain-date-time.d.ts.map +1 -0
  31. package/lib/time/plain-date-time.js +48 -0
  32. package/lib/time/plain-date-time.js.map +1 -0
  33. package/lib/time/plain-date.d.ts +30 -0
  34. package/lib/time/plain-date.d.ts.map +1 -0
  35. package/lib/time/plain-date.js +31 -0
  36. package/lib/time/plain-date.js.map +1 -0
  37. package/lib/time/plain-month-day.d.ts +20 -0
  38. package/lib/time/plain-month-day.d.ts.map +1 -0
  39. package/lib/time/plain-month-day.js +21 -0
  40. package/lib/time/plain-month-day.js.map +1 -0
  41. package/lib/time/plain-time.d.ts +27 -0
  42. package/lib/time/plain-time.d.ts.map +1 -0
  43. package/lib/time/plain-time.js +43 -0
  44. package/lib/time/plain-time.js.map +1 -0
  45. package/lib/time/plain-year-month.d.ts +27 -0
  46. package/lib/time/plain-year-month.d.ts.map +1 -0
  47. package/lib/time/plain-year-month.js +23 -0
  48. package/lib/time/plain-year-month.js.map +1 -0
  49. package/package.json +56 -0
@@ -0,0 +1,9 @@
1
+ import { Brand } from "effect";
2
+ /**
3
+ * Text produced for display only: never parsed, compared by content, or decoded back.
4
+ * Created only by display formatters in adapter (enforced by @luma-layered-ts/eslint-plugin codec-placement).
5
+ * Rendered as is by UI components.
6
+ */
7
+ export type DisplayText = string & Brand.Brand<"DisplayText">;
8
+ export declare const make: Brand.Brand.Constructor<DisplayText>;
9
+ //# sourceMappingURL=display-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display-text.d.ts","sourceRoot":"","sources":["../src/display-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAE9D,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CACxB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Brand } from "effect";
2
+ export const make = Brand.nominal();
3
+ //# sourceMappingURL=display-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display-text.js","sourceRoot":"","sources":["../src/display-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAS/B,MAAM,CAAC,MAAM,IAAI,GACf,KAAK,CAAC,OAAO,EAAe,CAAC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ export type { JsonPrimitive, JsonObject, JsonArray, JsonValue, ReadonlyJsonObject, ReadonlyJsonArray, ReadonlyJsonValue, } from "./json-value.js";
2
+ export type { StrictReadonlyMap } from "./strict-readonly-map.js";
3
+ export { toStrictReadonlyMap } from "./strict-readonly-map.js";
4
+ export type { StrictReadonlySet } from "./strict-readonly-set.js";
5
+ export { toStrictReadonlySet } from "./strict-readonly-set.js";
6
+ export * as DisplayText from "./display-text.js";
7
+ export * as Period from "./time/period.js";
8
+ export * as PlainDate from "./time/plain-date.js";
9
+ export * as PlainTime from "./time/plain-time.js";
10
+ export * as PlainDateTime from "./time/plain-date-time.js";
11
+ export * as PlainYearMonth from "./time/plain-year-month.js";
12
+ export * as PlainMonthDay from "./time/plain-month-day.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AAIjD,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,12 @@
1
+ export { toStrictReadonlyMap } from "./strict-readonly-map.js";
2
+ export { toStrictReadonlySet } from "./strict-readonly-set.js";
3
+ export * as DisplayText from "./display-text.js";
4
+ // Time: instants, zoned date-times, time zones, exact durations and the clock are effect's
5
+ // DateTime / Duration / Clock. These cover the calendar concepts effect does not model.
6
+ export * as Period from "./time/period.js";
7
+ export * as PlainDate from "./time/plain-date.js";
8
+ export * as PlainTime from "./time/plain-time.js";
9
+ export * as PlainDateTime from "./time/plain-date-time.js";
10
+ export * as PlainYearMonth from "./time/plain-year-month.js";
11
+ export * as PlainMonthDay from "./time/plain-month-day.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AAEjD,2FAA2F;AAC3F,wFAAwF;AACxF,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,19 @@
1
+ /** JSON primitive value. */
2
+ export type JsonPrimitive = string | number | boolean | null;
3
+ /** Mutable JSON object. Adapter/infra layer用。 */
4
+ export type JsonObject = {
5
+ [key: string]: JsonValue;
6
+ };
7
+ /** Mutable JSON array. Adapter/infra layer用。 */
8
+ export type JsonArray = JsonValue[];
9
+ /** Any JSON-representable value (mutable). Adapter/infra layerでの境界操作用。 */
10
+ export type JsonValue = JsonPrimitive | JsonObject | JsonArray;
11
+ /** Deep readonly JSON object. */
12
+ export type ReadonlyJsonObject = {
13
+ readonly [key: string]: ReadonlyJsonValue;
14
+ };
15
+ /** Deep readonly JSON array. */
16
+ export type ReadonlyJsonArray = readonly ReadonlyJsonValue[];
17
+ /** Any JSON-representable value (deep readonly). Inner layerでJSON構造を参照する必要がある場合用。 */
18
+ export type ReadonlyJsonValue = JsonPrimitive | ReadonlyJsonObject | ReadonlyJsonArray;
19
+ //# sourceMappingURL=json-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-value.d.ts","sourceRoot":"","sources":["../src/json-value.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAE7D,iDAAiD;AACjD,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEtD,gDAAgD;AAChD,MAAM,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;AAEpC,0EAA0E;AAC1E,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/D,iCAAiC;AACjC,MAAM,MAAM,kBAAkB,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAA;CAAE,CAAC;AAE/E,gCAAgC;AAChC,MAAM,MAAM,iBAAiB,GAAG,SAAS,iBAAiB,EAAE,CAAC;AAE7D,qFAAqF;AACrF,MAAM,MAAM,iBAAiB,GACzB,aAAa,GACb,kBAAkB,GAClB,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=json-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-value.js","sourceRoot":"","sources":["../src/json-value.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { Option } from "effect";
2
+ /**
3
+ * TSの`ReadonlyMap`は`get()`が`V | undefined`を返し、ランタイムで`Map`にアップキャスト可能。
4
+ * Inner layerではこのインターフェースを使う。`get()`は`Option<V>`を返す。
5
+ */
6
+ export interface StrictReadonlyMap<K, V> {
7
+ readonly size: number;
8
+ get(key: K): Option.Option<V>;
9
+ has(key: K): boolean;
10
+ keys(): IterableIterator<K>;
11
+ values(): IterableIterator<V>;
12
+ entries(): IterableIterator<readonly [K, V]>;
13
+ forEach(callbackfn: (value: V, key: K) => void): void;
14
+ [Symbol.iterator](): IterableIterator<readonly [K, V]>;
15
+ }
16
+ export declare function toStrictReadonlyMap<K, V>(map: ReadonlyMap<K, V>): StrictReadonlyMap<K, V>;
17
+ //# sourceMappingURL=strict-readonly-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict-readonly-map.d.ts","sourceRoot":"","sources":["../src/strict-readonly-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACrB,IAAI,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACtD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACxD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GACrB,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAezB"}
@@ -0,0 +1,16 @@
1
+ import { Option } from "effect";
2
+ export function toStrictReadonlyMap(map) {
3
+ return {
4
+ get size() {
5
+ return map.size;
6
+ },
7
+ get: (key) => Option.fromNullable(map.get(key)),
8
+ has: (key) => map.has(key),
9
+ keys: () => map.keys(),
10
+ values: () => map.values(),
11
+ entries: () => map.entries(),
12
+ forEach: (cb) => map.forEach(cb),
13
+ [Symbol.iterator]: () => map.entries(),
14
+ };
15
+ }
16
+ //# sourceMappingURL=strict-readonly-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict-readonly-map.js","sourceRoot":"","sources":["../src/strict-readonly-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAiBhC,MAAM,UAAU,mBAAmB,CACjC,GAAsB;IAEtB,OAAO;QACL,IAAI,IAAI;YACN,OAAO,GAAG,CAAC,IAAI,CAAC;QAClB,CAAC;QACD,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QAC1B,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;QAC1B,OAAO,EAAE,GAAG,EAAE,CACZ,GAAG,CAAC,OAAO,EAAuC;QACpD,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CACtB,GAAG,CAAC,OAAO,EAAuC;KACrD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * TSの`ReadonlySet`はランタイムで`Set`にアップキャスト可能。
3
+ * Inner layerではこのインターフェースを使う。
4
+ */
5
+ export interface StrictReadonlySet<T> {
6
+ readonly size: number;
7
+ has(value: T): boolean;
8
+ keys(): IterableIterator<T>;
9
+ values(): IterableIterator<T>;
10
+ entries(): IterableIterator<readonly [T, T]>;
11
+ forEach(callbackfn: (value: T) => void): void;
12
+ [Symbol.iterator](): IterableIterator<T>;
13
+ }
14
+ export declare function toStrictReadonlySet<T>(set: ReadonlySet<T>): StrictReadonlySet<T>;
15
+ //# sourceMappingURL=strict-readonly-set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict-readonly-set.d.ts","sourceRoot":"","sources":["../src/strict-readonly-set.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;IACvB,IAAI,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9C,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC1C;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAClB,iBAAiB,CAAC,CAAC,CAAC,CAatB"}
@@ -0,0 +1,14 @@
1
+ export function toStrictReadonlySet(set) {
2
+ return {
3
+ get size() {
4
+ return set.size;
5
+ },
6
+ has: (value) => set.has(value),
7
+ keys: () => set.keys(),
8
+ values: () => set.values(),
9
+ entries: () => set.entries(),
10
+ forEach: (cb) => set.forEach(cb),
11
+ [Symbol.iterator]: () => set.values(),
12
+ };
13
+ }
14
+ //# sourceMappingURL=strict-readonly-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict-readonly-set.js","sourceRoot":"","sources":["../src/strict-readonly-set.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,mBAAmB,CACjC,GAAmB;IAEnB,OAAO;QACL,IAAI,IAAI;YACN,OAAO,GAAG,CAAC,IAAI,CAAC;QAClB,CAAC;QACD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QAC9B,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;QAC1B,OAAO,EAAE,GAAG,EAAE,CACZ,GAAG,CAAC,OAAO,EAAuC;QACpD,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;KACtC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Option, Schema } from "effect";
2
+ export declare const attempt: <A>(f: () => A) => Option.Option<A>;
3
+ export declare const sign: (n: number) => -1 | 0 | 1;
4
+ export declare const isoStringSchema: <A, I>(target: Schema.Schema<A, I>, label: string, pattern: RegExp, parse: (s: string) => Option.Option<A>, format: (a: A) => string) => Schema.Schema<A, string>;
5
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/time/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrD,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,GAAG,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAC5B,CAAC;AAE5B,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,KAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAiC,CAAC;AAG5E,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,CAAC,EAClC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,OAAO,MAAM,EACb,SAAS,MAAM,EACf,OAAO,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EACtC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,KACvB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAUtB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Option, ParseResult, Schema } from "effect";
2
+ // Temporal throws RangeError on invalid input; every constructor here returns Option instead.
3
+ export const attempt = (f) => Option.liftThrowable(f)();
4
+ export const sign = (n) => (n < 0 ? -1 : n > 0 ? 1 : 0);
5
+ // Strict ISO 8601 string <-> canonical value. `pattern` rejects the looser forms Temporal accepts.
6
+ export const isoStringSchema = (target, label, pattern, parse, format) => Schema.transformOrFail(Schema.String, Schema.typeSchema(target), {
7
+ strict: true,
8
+ decode: (s, _, ast) => Option.match(pattern.test(s) ? parse(s) : Option.none(), {
9
+ onNone: () => ParseResult.fail(new ParseResult.Type(ast, s, `Expected ${label}`)),
10
+ onSome: (a) => ParseResult.succeed(a),
11
+ }),
12
+ encode: (a) => ParseResult.succeed(format(a)),
13
+ });
14
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/time/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErD,8FAA8F;AAC9F,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,CAAU,EAAoB,EAAE,CACzD,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AAE5B,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAc,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5E,mGAAmG;AACnG,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,MAA2B,EAC3B,KAAa,EACb,OAAe,EACf,KAAsC,EACtC,MAAwB,EACE,EAAE,CAC5B,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;IAC/D,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CACpB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;QACvD,MAAM,EAAE,GAAG,EAAE,CACX,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,YAAY,KAAK,EAAE,CAAC,CAAC;QACrE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;KACtC,CAAC;IACJ,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { Option, Schema } from "effect";
2
+ import { Temporal } from "temporal-polyfill";
3
+ declare const Period_base: Schema.TaggedClass<Period, "Period", {
4
+ readonly _tag: Schema.tag<"Period">;
5
+ } & {
6
+ years: typeof Schema.Int;
7
+ months: typeof Schema.Int;
8
+ weeks: typeof Schema.Int;
9
+ days: typeof Schema.Int;
10
+ }>;
11
+ /**
12
+ * Calendar period: years, months, weeks and days, whose length depends on the date it is applied to.
13
+ * Exact lengths of time are `Duration` from effect; the two are kept as separate types.
14
+ */
15
+ export declare class Period extends Period_base {
16
+ }
17
+ export type PeriodInput = Partial<Pick<Period, "years" | "months" | "weeks" | "days">>;
18
+ export declare const make: (input: PeriodInput) => Option.Option<Period>;
19
+ export declare const zero: Period;
20
+ export declare const negate: (self: Period) => Period;
21
+ export declare const isZero: (self: Period) => boolean;
22
+ /** @internal */
23
+ export declare const toTemporal: (self: Period) => Temporal.Duration;
24
+ /** @internal */
25
+ export declare const fromTemporal: (d: Temporal.Duration) => Period;
26
+ /** ISO 8601 date-based duration: `P1Y2M`, `P3W`, `-P10D`. Time components are rejected. */
27
+ export declare const FromString: Schema.Schema<Period, string>;
28
+ export {};
29
+ //# sourceMappingURL=period.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"period.d.ts","sourceRoot":"","sources":["../../src/time/period.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;;;;;;;;;AAG7C;;;GAGG;AACH,qBAAa,MAAO,SAAQ,WAe3B;CAAG;AAEJ,MAAM,MAAM,WAAW,GAAG,OAAO,CAC/B,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,CACpD,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,OAAO,WAAW,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAS3D,CAAC;AAEJ,eAAO,MAAM,IAAI,EAAE,MAKjB,CAAC;AAEH,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,KAAG,MAMlC,CAAC;AAEL,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,KAAG,OACwC,CAAC;AAE/E,gBAAgB;AAChB,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,QAAQ,CAAC,QAM/C,CAAC;AAEL,gBAAgB;AAChB,eAAO,MAAM,YAAY,GAAI,GAAG,QAAQ,CAAC,QAAQ,KAAG,MAMhD,CAAC;AAEL,2FAA2F;AAC3F,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAMpD,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { Schema } from "effect";
2
+ import { Temporal } from "temporal-polyfill";
3
+ import { attempt, isoStringSchema } from "./internal.js";
4
+ /**
5
+ * Calendar period: years, months, weeks and days, whose length depends on the date it is applied to.
6
+ * Exact lengths of time are `Duration` from effect; the two are kept as separate types.
7
+ */
8
+ export class Period extends Schema.TaggedClass()("Period", Schema.Struct({
9
+ years: Schema.Int,
10
+ months: Schema.Int,
11
+ weeks: Schema.Int,
12
+ days: Schema.Int,
13
+ }).pipe(Schema.filter(({ years, months, weeks, days }) => [years, months, weeks, days].every((n) => n >= 0) ||
14
+ [years, months, weeks, days].every((n) => n <= 0), { message: () => "Period fields must not mix signs" }))) {
15
+ }
16
+ export const make = (input) => attempt(() => new Period({
17
+ years: input.years ?? 0,
18
+ months: input.months ?? 0,
19
+ weeks: input.weeks ?? 0,
20
+ days: input.days ?? 0,
21
+ }));
22
+ export const zero = new Period({
23
+ years: 0,
24
+ months: 0,
25
+ weeks: 0,
26
+ days: 0,
27
+ });
28
+ export const negate = (self) => new Period({
29
+ years: -self.years,
30
+ months: -self.months,
31
+ weeks: -self.weeks,
32
+ days: -self.days,
33
+ });
34
+ export const isZero = (self) => self.years === 0 && self.months === 0 && self.weeks === 0 && self.days === 0;
35
+ /** @internal */
36
+ export const toTemporal = (self) => Temporal.Duration.from({
37
+ years: self.years,
38
+ months: self.months,
39
+ weeks: self.weeks,
40
+ days: self.days,
41
+ });
42
+ /** @internal */
43
+ export const fromTemporal = (d) => new Period({
44
+ years: d.years,
45
+ months: d.months,
46
+ weeks: d.weeks,
47
+ days: d.days,
48
+ });
49
+ /** ISO 8601 date-based duration: `P1Y2M`, `P3W`, `-P10D`. Time components are rejected. */
50
+ export const FromString = isoStringSchema(Period, "an ISO 8601 period (PnYnMnWnD)", /^-?P(?=\d)(\d+Y)?(\d+M)?(\d+W)?(\d+D)?$/, (s) => attempt(() => fromTemporal(Temporal.Duration.from(s))), (p) => toTemporal(p).toString());
51
+ //# sourceMappingURL=period.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"period.js","sourceRoot":"","sources":["../../src/time/period.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { DateTime, Duration, Option, Order as Ord, Schema } from "effect";
2
+ import { Temporal } from "temporal-polyfill";
3
+ import * as Period from "./period.js";
4
+ import * as PlainDate from "./plain-date.js";
5
+ import * as PlainTime from "./plain-time.js";
6
+ declare const PlainDateTime_base: Schema.TaggedClass<PlainDateTime, "PlainDateTime", {
7
+ readonly _tag: Schema.tag<"PlainDateTime">;
8
+ } & {
9
+ date: typeof PlainDate.PlainDate;
10
+ time: typeof PlainTime.PlainTime;
11
+ }>;
12
+ /** Date and wall-clock time without time zone. Becomes an instant only with a time zone (toZoned). */
13
+ export declare class PlainDateTime extends PlainDateTime_base {
14
+ }
15
+ export declare const make: (date: PlainDate.PlainDate, time: PlainTime.PlainTime) => PlainDateTime;
16
+ /** @internal */
17
+ export declare const toTemporal: (self: PlainDateTime) => Temporal.PlainDateTime;
18
+ /** @internal */
19
+ export declare const fromTemporal: (t: Temporal.PlainDateTime) => PlainDateTime;
20
+ export declare const Order: Ord.Order<PlainDateTime>;
21
+ export declare const addPeriod: (self: PlainDateTime, period: Period.Period) => PlainDateTime;
22
+ /** Adds an exact duration as wall-clock arithmetic (no time zone, so no DST). None for an infinite duration. */
23
+ export declare const addDuration: (self: PlainDateTime, duration: Duration.DurationInput) => Option.Option<PlainDateTime>;
24
+ /**
25
+ * The instant at which this wall-clock time occurs in `timeZone`.
26
+ * Time zone rules come from the runtime; compute it in one environment and pass the result on.
27
+ */
28
+ export declare const toZoned: (self: PlainDateTime, timeZone: DateTime.TimeZone, disambiguation?: DateTime.Disambiguation) => Option.Option<DateTime.Zoned>;
29
+ /** Wall-clock date and time of a zoned instant. */
30
+ export declare const fromZoned: (zoned: DateTime.Zoned) => PlainDateTime;
31
+ /** `YYYY-MM-DDTHH:MM[:SS[.sss]]` */
32
+ export declare const FromString: Schema.Schema<PlainDateTime, string>;
33
+ export {};
34
+ //# sourceMappingURL=plain-date-time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-date-time.d.ts","sourceRoot":"","sources":["../../src/time/plain-date-time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;;;;;;;AAE7C,sGAAsG;AACtG,qBAAa,aAAc,SAAQ,kBAGlC;CAAG;AAEJ,eAAO,MAAM,IAAI,GACf,MAAM,SAAS,CAAC,SAAS,EACzB,MAAM,SAAS,CAAC,SAAS,KACxB,aAAkD,CAAC;AAEtD,gBAAgB;AAChB,eAAO,MAAM,UAAU,GAAI,MAAM,aAAa,KAAG,QAAQ,CAAC,aAGvD,CAAC;AAEJ,gBAAgB;AAChB,eAAO,MAAM,YAAY,GAAI,GAAG,QAAQ,CAAC,aAAa,KAAG,aAItD,CAAC;AAEJ,eAAO,MAAM,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,CAE1C,CAAC;AAEF,eAAO,MAAM,SAAS,GACpB,MAAM,aAAa,EACnB,QAAQ,MAAM,CAAC,MAAM,KACpB,aAGA,CAAC;AAEJ,gHAAgH;AAChH,eAAO,MAAM,WAAW,GACtB,MAAM,aAAa,EACnB,UAAU,QAAQ,CAAC,aAAa,KAC/B,MAAM,CAAC,MAAM,CAAC,aAAa,CAK3B,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,OAAO,GAClB,MAAM,aAAa,EACnB,UAAU,QAAQ,CAAC,QAAQ,EAC3B,iBAAiB,QAAQ,CAAC,cAAc,KACvC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAY5B,CAAC;AAEJ,mDAAmD;AACnD,eAAO,MAAM,SAAS,GAAI,OAAO,QAAQ,CAAC,KAAK,KAAG,aAejD,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAM3D,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { DateTime, Duration, Order as Ord, Schema } from "effect";
2
+ import { Temporal } from "temporal-polyfill";
3
+ import { attempt, isoStringSchema, sign } from "./internal.js";
4
+ import * as Period from "./period.js";
5
+ import * as PlainDate from "./plain-date.js";
6
+ import * as PlainTime from "./plain-time.js";
7
+ /** Date and wall-clock time without time zone. Becomes an instant only with a time zone (toZoned). */
8
+ export class PlainDateTime extends Schema.TaggedClass()("PlainDateTime", { date: PlainDate.PlainDate, time: PlainTime.PlainTime }) {
9
+ }
10
+ export const make = (date, time) => new PlainDateTime({ date, time });
11
+ /** @internal */
12
+ export const toTemporal = (self) => PlainDate.toTemporal(self.date).toPlainDateTime(PlainTime.toTemporal(self.time));
13
+ /** @internal */
14
+ export const fromTemporal = (t) => make(PlainDate.fromTemporal(t.toPlainDate()), PlainTime.fromTemporal(t.toPlainTime()));
15
+ export const Order = Ord.make((a, b) => sign(Temporal.PlainDateTime.compare(toTemporal(a), toTemporal(b))));
16
+ export const addPeriod = (self, period) => fromTemporal(toTemporal(self).add(Period.toTemporal(period), { overflow: "constrain" }));
17
+ /** Adds an exact duration as wall-clock arithmetic (no time zone, so no DST). None for an infinite duration. */
18
+ export const addDuration = (self, duration) => attempt(() => fromTemporal(toTemporal(self).add({ milliseconds: Duration.toMillis(duration) })));
19
+ /**
20
+ * The instant at which this wall-clock time occurs in `timeZone`.
21
+ * Time zone rules come from the runtime; compute it in one environment and pass the result on.
22
+ */
23
+ export const toZoned = (self, timeZone, disambiguation) => DateTime.makeZoned({
24
+ year: self.date.year,
25
+ month: self.date.month,
26
+ day: self.date.day,
27
+ hours: self.time.hour,
28
+ minutes: self.time.minute,
29
+ seconds: self.time.second,
30
+ millis: self.time.millisecond,
31
+ }, { timeZone, adjustForTimeZone: true, disambiguation });
32
+ /** Wall-clock date and time of a zoned instant. */
33
+ export const fromZoned = (zoned) => {
34
+ const parts = DateTime.toParts(zoned);
35
+ return make(new PlainDate.PlainDate({
36
+ year: parts.year,
37
+ month: parts.month,
38
+ day: parts.day,
39
+ }), new PlainTime.PlainTime({
40
+ hour: parts.hours,
41
+ minute: parts.minutes,
42
+ second: parts.seconds,
43
+ millisecond: parts.millis,
44
+ }));
45
+ };
46
+ /** `YYYY-MM-DDTHH:MM[:SS[.sss]]` */
47
+ export const FromString = isoStringSchema(PlainDateTime, "an ISO 8601 date-time without offset (YYYY-MM-DDTHH:MM[:SS[.sss]])", /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,3})?)?$/, (s) => attempt(() => fromTemporal(Temporal.PlainDateTime.from(s))), (dt) => toTemporal(dt).toString());
48
+ //# sourceMappingURL=plain-date-time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-date-time.js","sourceRoot":"","sources":["../../src/time/plain-date-time.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Option, Order as Ord, Schema } from "effect";
2
+ import { Temporal } from "temporal-polyfill";
3
+ import * as Period from "./period.js";
4
+ declare const PlainDate_base: Schema.TaggedClass<PlainDate, "PlainDate", {
5
+ readonly _tag: Schema.tag<"PlainDate">;
6
+ } & {
7
+ year: typeof Schema.Int;
8
+ month: Schema.filter<typeof Schema.Int>;
9
+ day: Schema.filter<typeof Schema.Int>;
10
+ }>;
11
+ /** Calendar date without time or time zone (ISO 8601 calendar). */
12
+ export declare class PlainDate extends PlainDate_base {
13
+ }
14
+ export type PlainDateInput = Pick<PlainDate, "year" | "month" | "day">;
15
+ export declare const make: (input: PlainDateInput) => Option.Option<PlainDate>;
16
+ /** @internal */
17
+ export declare const toTemporal: (self: PlainDate) => Temporal.PlainDate;
18
+ /** @internal */
19
+ export declare const fromTemporal: (t: Temporal.PlainDate) => PlainDate;
20
+ export declare const Order: Ord.Order<PlainDate>;
21
+ /** Adds a calendar period. A day past the end of the month is clamped (Jan 31 + 1 month = Feb 28/29). */
22
+ export declare const addPeriod: (self: PlainDate, period: Period.Period) => PlainDate;
23
+ /** Period from `self` to `other`, using years, months and days. */
24
+ export declare const until: (self: PlainDate, other: PlainDate) => Period.Period;
25
+ /** ISO day of week: Monday = 1, ..., Sunday = 7. */
26
+ export declare const dayOfWeek: (self: PlainDate) => number;
27
+ /** `YYYY-MM-DD` */
28
+ export declare const FromString: Schema.Schema<PlainDate, string>;
29
+ export {};
30
+ //# sourceMappingURL=plain-date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-date.d.ts","sourceRoot":"","sources":["../../src/time/plain-date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;;;;;;;;AAQtC,mEAAmE;AACnE,qBAAa,SAAU,SAAQ,cAW9B;CAAG;AAEJ,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC;AAEvE,eAAO,MAAM,IAAI,GAAI,OAAO,cAAc,KAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAC/B,CAAC;AAEtC,gBAAgB;AAChB,eAAO,MAAM,UAAU,GAAI,MAAM,SAAS,KAAG,QAAQ,CAAC,SAKlD,CAAC;AAEL,gBAAgB;AAChB,eAAO,MAAM,YAAY,GAAI,GAAG,QAAQ,CAAC,SAAS,KAAG,SACQ,CAAC;AAE9D,eAAO,MAAM,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAEtC,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,SAAS,GAAI,MAAM,SAAS,EAAE,QAAQ,MAAM,CAAC,MAAM,KAAG,SAGhE,CAAC;AAEJ,mEAAmE;AACnE,eAAO,MAAM,KAAK,GAAI,MAAM,SAAS,EAAE,OAAO,SAAS,KAAG,MAAM,CAAC,MAG9D,CAAC;AAEJ,oDAAoD;AACpD,eAAO,MAAM,SAAS,GAAI,MAAM,SAAS,KAAG,MAChB,CAAC;AAE7B,mBAAmB;AACnB,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAMvD,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { Option, Order as Ord, Schema } from "effect";
2
+ import { Temporal } from "temporal-polyfill";
3
+ import { attempt, isoStringSchema, sign } from "./internal.js";
4
+ import * as Period from "./period.js";
5
+ const fields = Schema.Struct({
6
+ year: Schema.Int,
7
+ month: Schema.Int.pipe(Schema.between(1, 12)),
8
+ day: Schema.Int.pipe(Schema.between(1, 31)),
9
+ });
10
+ /** Calendar date without time or time zone (ISO 8601 calendar). */
11
+ export class PlainDate extends Schema.TaggedClass()("PlainDate", fields.pipe(Schema.filter((f) => Option.isSome(attempt(() => Temporal.PlainDate.from(f, { overflow: "reject" }))), { message: () => "Not an existing calendar date" }))) {
12
+ }
13
+ export const make = (input) => attempt(() => new PlainDate(input));
14
+ /** @internal */
15
+ export const toTemporal = (self) => Temporal.PlainDate.from({
16
+ year: self.year,
17
+ month: self.month,
18
+ day: self.day,
19
+ });
20
+ /** @internal */
21
+ export const fromTemporal = (t) => new PlainDate({ year: t.year, month: t.month, day: t.day });
22
+ export const Order = Ord.make((a, b) => sign(Temporal.PlainDate.compare(toTemporal(a), toTemporal(b))));
23
+ /** Adds a calendar period. A day past the end of the month is clamped (Jan 31 + 1 month = Feb 28/29). */
24
+ export const addPeriod = (self, period) => fromTemporal(toTemporal(self).add(Period.toTemporal(period), { overflow: "constrain" }));
25
+ /** Period from `self` to `other`, using years, months and days. */
26
+ export const until = (self, other) => Period.fromTemporal(toTemporal(self).until(toTemporal(other), { largestUnit: "years" }));
27
+ /** ISO day of week: Monday = 1, ..., Sunday = 7. */
28
+ export const dayOfWeek = (self) => toTemporal(self).dayOfWeek;
29
+ /** `YYYY-MM-DD` */
30
+ export const FromString = isoStringSchema(PlainDate, "an ISO 8601 date (YYYY-MM-DD)", /^\d{4}-\d{2}-\d{2}$/, (s) => attempt(() => fromTemporal(Temporal.PlainDate.from(s))), (d) => toTemporal(d).toString());
31
+ //# sourceMappingURL=plain-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-date.js","sourceRoot":"","sources":["../../src/time/plain-date.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Option, Order as Ord, Schema } from "effect";
2
+ import * as PlainDate from "./plain-date.js";
3
+ declare const PlainMonthDay_base: Schema.TaggedClass<PlainMonthDay, "PlainMonthDay", {
4
+ readonly _tag: Schema.tag<"PlainMonthDay">;
5
+ } & {
6
+ month: Schema.filter<typeof Schema.Int>;
7
+ day: Schema.filter<typeof Schema.Int>;
8
+ }>;
9
+ /** Month and day recurring every year (anniversary). February 29 is valid. */
10
+ export declare class PlainMonthDay extends PlainMonthDay_base {
11
+ }
12
+ export type PlainMonthDayInput = Pick<PlainMonthDay, "month" | "day">;
13
+ export declare const make: (input: PlainMonthDayInput) => Option.Option<PlainMonthDay>;
14
+ export declare const Order: Ord.Order<PlainMonthDay>;
15
+ /** None when the day does not exist in `year` (February 29 in a common year). */
16
+ export declare const toPlainDate: (self: PlainMonthDay, year: number) => Option.Option<PlainDate.PlainDate>;
17
+ /** `--MM-DD` or `MM-DD` (encodes as `MM-DD`) */
18
+ export declare const FromString: Schema.Schema<PlainMonthDay, string>;
19
+ export {};
20
+ //# sourceMappingURL=plain-month-day.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-month-day.d.ts","sourceRoot":"","sources":["../../src/time/plain-month-day.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGtD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;;;;;;;AAE7C,8EAA8E;AAC9E,qBAAa,aAAc,SAAQ,kBAclC;CAAG;AAEJ,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC;AAEtE,eAAO,MAAM,IAAI,GAAI,OAAO,kBAAkB,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CACnC,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,CAG1C,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,WAAW,GACtB,MAAM,aAAa,EACnB,MAAM,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CACwB,CAAC;AAE7D,gDAAgD;AAChD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAY3D,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { Option, Order as Ord, Schema } from "effect";
2
+ import { Temporal } from "temporal-polyfill";
3
+ import { attempt, isoStringSchema } from "./internal.js";
4
+ import * as PlainDate from "./plain-date.js";
5
+ /** Month and day recurring every year (anniversary). February 29 is valid. */
6
+ export class PlainMonthDay extends Schema.TaggedClass()("PlainMonthDay", Schema.Struct({
7
+ month: Schema.Int.pipe(Schema.between(1, 12)),
8
+ day: Schema.Int.pipe(Schema.between(1, 31)),
9
+ }).pipe(Schema.filter((f) => Option.isSome(attempt(() => Temporal.PlainMonthDay.from(f, { overflow: "reject" }))), { message: () => "Not an existing month-day" }))) {
10
+ }
11
+ export const make = (input) => attempt(() => new PlainMonthDay(input));
12
+ export const Order = Ord.combine(Ord.mapInput(Ord.number, (md) => md.month), Ord.mapInput(Ord.number, (md) => md.day));
13
+ /** None when the day does not exist in `year` (February 29 in a common year). */
14
+ export const toPlainDate = (self, year) => PlainDate.make({ year, month: self.month, day: self.day });
15
+ /** `--MM-DD` or `MM-DD` (encodes as `MM-DD`) */
16
+ export const FromString = isoStringSchema(PlainMonthDay, "an ISO 8601 month-day (--MM-DD)", /^(--)?\d{2}-\d{2}$/, (s) => attempt(() => {
17
+ // PlainMonthDay has no month field; 1972 is a leap year, so February 29 survives
18
+ const d = Temporal.PlainMonthDay.from(s).toPlainDate({ year: 1972 });
19
+ return new PlainMonthDay({ month: d.month, day: d.day });
20
+ }), (md) => Temporal.PlainMonthDay.from({ month: md.month, day: md.day }).toString());
21
+ //# sourceMappingURL=plain-month-day.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-month-day.js","sourceRoot":"","sources":["../../src/time/plain-month-day.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAE7C,8EAA8E;AAC9E,MAAM,OAAO,aAAc,SAAQ,MAAM,CAAC,WAAW,EAAiB,CACpE,eAAe,EACf,MAAM,CAAC,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC5C,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,MAAM,CACX,CAAC,CAAC,EAAE,EAAE,CACJ,MAAM,CAAC,MAAM,CACX,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CACtE,EACH,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,2BAA2B,EAAE,CAC/C,CACF,CACF;CAAG;AAIJ,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAyB,EAAgC,EAAE,CAC9E,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAE1C,MAAM,CAAC,MAAM,KAAK,GAA6B,GAAG,CAAC,OAAO,CACxD,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EACzD,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CACxD,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAmB,EACnB,IAAY,EACwB,EAAE,CACtC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAE7D,gDAAgD;AAChD,MAAM,CAAC,MAAM,UAAU,GAAyC,eAAe,CAC7E,aAAa,EACb,iCAAiC,EACjC,oBAAoB,EACpB,CAAC,CAAC,EAAE,EAAE,CACJ,OAAO,CAAC,GAAG,EAAE;IACX,iFAAiF;IACjF,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,OAAO,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC,EACJ,CAAC,EAAE,EAAE,EAAE,CACL,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAC3E,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { Duration, Option, Order as Ord, Schema } from "effect";
2
+ import { Temporal } from "temporal-polyfill";
3
+ declare const PlainTime_base: Schema.TaggedClass<PlainTime, "PlainTime", {
4
+ readonly _tag: Schema.tag<"PlainTime">;
5
+ } & {
6
+ hour: Schema.filter<typeof Schema.Int>;
7
+ minute: Schema.filter<typeof Schema.Int>;
8
+ second: Schema.filter<typeof Schema.Int>;
9
+ millisecond: Schema.filter<typeof Schema.Int>;
10
+ }>;
11
+ /** Wall-clock time without date or time zone, in milliseconds precision (same as effect DateTime). */
12
+ export declare class PlainTime extends PlainTime_base {
13
+ }
14
+ export type PlainTimeInput = Pick<PlainTime, "hour" | "minute"> & Partial<Pick<PlainTime, "second" | "millisecond">>;
15
+ export declare const make: (input: PlainTimeInput) => Option.Option<PlainTime>;
16
+ export declare const midnight: PlainTime;
17
+ /** @internal */
18
+ export declare const toTemporal: (self: PlainTime) => Temporal.PlainTime;
19
+ /** @internal Sub-millisecond parts are truncated. */
20
+ export declare const fromTemporal: (t: Temporal.PlainTime) => PlainTime;
21
+ export declare const Order: Ord.Order<PlainTime>;
22
+ /** Adds an exact duration, wrapping around midnight. None for an infinite duration. */
23
+ export declare const addDuration: (self: PlainTime, duration: Duration.DurationInput) => Option.Option<PlainTime>;
24
+ /** `HH:MM`, `HH:MM:SS` or `HH:MM:SS.sss` */
25
+ export declare const FromString: Schema.Schema<PlainTime, string>;
26
+ export {};
27
+ //# sourceMappingURL=plain-time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-time.d.ts","sourceRoot":"","sources":["../../src/time/plain-time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;;;;;;;;;AAG7C,sGAAsG;AACtG,qBAAa,SAAU,SAAQ,cAK7B;CAAG;AAEL,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,GAC7D,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC;AAErD,eAAO,MAAM,IAAI,GAAI,OAAO,cAAc,KAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CASjE,CAAC;AAEJ,eAAO,MAAM,QAAQ,EAAE,SAKrB,CAAC;AAEH,gBAAgB;AAChB,eAAO,MAAM,UAAU,GAAI,MAAM,SAAS,KAAG,QAAQ,CAAC,SAMlD,CAAC;AAEL,qDAAqD;AACrD,eAAO,MAAM,YAAY,GAAI,GAAG,QAAQ,CAAC,SAAS,KAAG,SAMjD,CAAC;AAEL,eAAO,MAAM,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAEtC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,WAAW,GACtB,MAAM,SAAS,EACf,UAAU,QAAQ,CAAC,aAAa,KAC/B,MAAM,CAAC,MAAM,CAAC,SAAS,CAKvB,CAAC;AAEJ,4CAA4C;AAC5C,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAMvD,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { Duration, Order as Ord, Schema } from "effect";
2
+ import { Temporal } from "temporal-polyfill";
3
+ import { attempt, isoStringSchema, sign } from "./internal.js";
4
+ /** Wall-clock time without date or time zone, in milliseconds precision (same as effect DateTime). */
5
+ export class PlainTime extends Schema.TaggedClass()("PlainTime", {
6
+ hour: Schema.Int.pipe(Schema.between(0, 23)),
7
+ minute: Schema.Int.pipe(Schema.between(0, 59)),
8
+ second: Schema.Int.pipe(Schema.between(0, 59)),
9
+ millisecond: Schema.Int.pipe(Schema.between(0, 999)),
10
+ }) {
11
+ }
12
+ export const make = (input) => attempt(() => new PlainTime({
13
+ hour: input.hour,
14
+ minute: input.minute,
15
+ second: input.second ?? 0,
16
+ millisecond: input.millisecond ?? 0,
17
+ }));
18
+ export const midnight = new PlainTime({
19
+ hour: 0,
20
+ minute: 0,
21
+ second: 0,
22
+ millisecond: 0,
23
+ });
24
+ /** @internal */
25
+ export const toTemporal = (self) => Temporal.PlainTime.from({
26
+ hour: self.hour,
27
+ minute: self.minute,
28
+ second: self.second,
29
+ millisecond: self.millisecond,
30
+ });
31
+ /** @internal Sub-millisecond parts are truncated. */
32
+ export const fromTemporal = (t) => new PlainTime({
33
+ hour: t.hour,
34
+ minute: t.minute,
35
+ second: t.second,
36
+ millisecond: t.millisecond,
37
+ });
38
+ export const Order = Ord.make((a, b) => sign(Temporal.PlainTime.compare(toTemporal(a), toTemporal(b))));
39
+ /** Adds an exact duration, wrapping around midnight. None for an infinite duration. */
40
+ export const addDuration = (self, duration) => attempt(() => fromTemporal(toTemporal(self).add({ milliseconds: Duration.toMillis(duration) })));
41
+ /** `HH:MM`, `HH:MM:SS` or `HH:MM:SS.sss` */
42
+ export const FromString = isoStringSchema(PlainTime, "an ISO 8601 time (HH:MM[:SS[.sss]])", /^\d{2}:\d{2}(:\d{2}(\.\d{1,3})?)?$/, (s) => attempt(() => fromTemporal(Temporal.PlainTime.from(s))), (t) => toTemporal(t).toString());
43
+ //# sourceMappingURL=plain-time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-time.js","sourceRoot":"","sources":["../../src/time/plain-time.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { Option, Order as Ord, Schema } from "effect";
2
+ import { Temporal } from "temporal-polyfill";
3
+ import * as PlainDate from "./plain-date.js";
4
+ declare const PlainYearMonth_base: Schema.TaggedClass<PlainYearMonth, "PlainYearMonth", {
5
+ readonly _tag: Schema.tag<"PlainYearMonth">;
6
+ } & {
7
+ year: typeof Schema.Int;
8
+ month: Schema.filter<typeof Schema.Int>;
9
+ }>;
10
+ /** Year and month (billing month, monthly report). */
11
+ export declare class PlainYearMonth extends PlainYearMonth_base {
12
+ }
13
+ export type PlainYearMonthInput = Pick<PlainYearMonth, "year" | "month">;
14
+ export declare const make: (input: PlainYearMonthInput) => Option.Option<PlainYearMonth>;
15
+ /** @internal */
16
+ export declare const toTemporal: (self: PlainYearMonth) => Temporal.PlainYearMonth;
17
+ /** @internal */
18
+ export declare const fromTemporal: (t: Temporal.PlainYearMonth) => PlainYearMonth;
19
+ export declare const Order: Ord.Order<PlainYearMonth>;
20
+ export declare const addMonths: (self: PlainYearMonth, months: number) => PlainYearMonth;
21
+ export declare const daysInMonth: (self: PlainYearMonth) => number;
22
+ /** None when `day` does not exist in the month. */
23
+ export declare const toPlainDate: (self: PlainYearMonth, day: number) => Option.Option<PlainDate.PlainDate>;
24
+ /** `YYYY-MM` */
25
+ export declare const FromString: Schema.Schema<PlainYearMonth, string>;
26
+ export {};
27
+ //# sourceMappingURL=plain-year-month.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-year-month.d.ts","sourceRoot":"","sources":["../../src/time/plain-year-month.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;;;;;;;AAE7C,sDAAsD;AACtD,qBAAa,cAAe,SAAQ,mBAMnC;CAAG;AAEJ,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;AAEzE,eAAO,MAAM,IAAI,GACf,OAAO,mBAAmB,KACzB,MAAM,CAAC,MAAM,CAAC,cAAc,CAA6C,CAAC;AAE7E,gBAAgB;AAChB,eAAO,MAAM,UAAU,GAAI,MAAM,cAAc,KAAG,QAAQ,CAAC,cACW,CAAC;AAEvE,gBAAgB;AAChB,eAAO,MAAM,YAAY,GAAI,GAAG,QAAQ,CAAC,cAAc,KAAG,cACJ,CAAC;AAEvD,eAAO,MAAM,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc,CAE3C,CAAC;AAEF,eAAO,MAAM,SAAS,GACpB,MAAM,cAAc,EACpB,QAAQ,MAAM,KACb,cAAgE,CAAC;AAEpE,eAAO,MAAM,WAAW,GAAI,MAAM,cAAc,KAAG,MACrB,CAAC;AAE/B,mDAAmD;AACnD,eAAO,MAAM,WAAW,GACtB,MAAM,cAAc,EACpB,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CACyB,CAAC;AAE9D,gBAAgB;AAChB,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAO1D,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { Order as Ord, Schema } from "effect";
2
+ import { Temporal } from "temporal-polyfill";
3
+ import { attempt, isoStringSchema, sign } from "./internal.js";
4
+ import * as PlainDate from "./plain-date.js";
5
+ /** Year and month (billing month, monthly report). */
6
+ export class PlainYearMonth extends Schema.TaggedClass()("PlainYearMonth", {
7
+ year: Schema.Int,
8
+ month: Schema.Int.pipe(Schema.between(1, 12)),
9
+ }) {
10
+ }
11
+ export const make = (input) => attempt(() => new PlainYearMonth(input));
12
+ /** @internal */
13
+ export const toTemporal = (self) => Temporal.PlainYearMonth.from({ year: self.year, month: self.month });
14
+ /** @internal */
15
+ export const fromTemporal = (t) => new PlainYearMonth({ year: t.year, month: t.month });
16
+ export const Order = Ord.make((a, b) => sign(Temporal.PlainYearMonth.compare(toTemporal(a), toTemporal(b))));
17
+ export const addMonths = (self, months) => fromTemporal(toTemporal(self).add({ months }));
18
+ export const daysInMonth = (self) => toTemporal(self).daysInMonth;
19
+ /** None when `day` does not exist in the month. */
20
+ export const toPlainDate = (self, day) => PlainDate.make({ year: self.year, month: self.month, day });
21
+ /** `YYYY-MM` */
22
+ export const FromString = isoStringSchema(PlainYearMonth, "an ISO 8601 year-month (YYYY-MM)", /^\d{4}-\d{2}$/, (s) => attempt(() => fromTemporal(Temporal.PlainYearMonth.from(s))), (ym) => toTemporal(ym).toString());
23
+ //# sourceMappingURL=plain-year-month.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-year-month.js","sourceRoot":"","sources":["../../src/time/plain-year-month.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAE7C,sDAAsD;AACtD,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CACtE,gBAAgB,EAChB;IACE,IAAI,EAAE,MAAM,CAAC,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC9C,CACF;CAAG;AAIJ,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,KAA0B,EACK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAE7E,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAoB,EAA2B,EAAE,CAC1E,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAEvE,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAA0B,EAAkB,EAAE,CACzE,IAAI,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,KAAK,GAA8B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAChE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CACpE,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,IAAoB,EACpB,MAAc,EACE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAoB,EAAU,EAAE,CAC1D,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;AAE/B,mDAAmD;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAoB,EACpB,GAAW,EACyB,EAAE,CACtC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAE9D,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GACrB,eAAe,CACb,cAAc,EACd,kCAAkC,EAClC,eAAe,EACf,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EACnE,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAClC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@luma-layered-ts/types",
3
+ "version": "0.0.0-dev.0",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "description": "Type utilities for luma-layered-ts architecture",
8
+ "type": "module",
9
+ "main": "lib/index.js",
10
+ "types": "lib/index.d.ts",
11
+ "files": [
12
+ "lib"
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/LumaKernel/luma-layered-ts",
17
+ "directory": "packages/types"
18
+ },
19
+ "homepage": "https://github.com/LumaKernel/luma-layered-ts/tree/main/packages/types",
20
+ "scripts": {
21
+ "build": "tsc -p tsconfig.build.json",
22
+ "test": "vitest",
23
+ "lint": "eslint src && prettier . --list-different",
24
+ "lint-fix": "eslint src && prettier . --write",
25
+ "typecheck": "tsc --noEmit"
26
+ },
27
+ "keywords": [
28
+ "typescript",
29
+ "layered-architecture",
30
+ "effect-ts",
31
+ "readonly",
32
+ "json"
33
+ ],
34
+ "author": "Luma <world@luma.email>",
35
+ "license": "MIT",
36
+ "dependencies": {
37
+ "effect": "^3.0.0",
38
+ "temporal-polyfill": "^1.0.6"
39
+ },
40
+ "peerDependencies": {
41
+ "effect": "^3.0.0",
42
+ "typescript": "^5.0.0"
43
+ },
44
+ "devDependencies": {
45
+ "@eslint/js": "^10.0.1",
46
+ "@typescript-eslint/eslint-plugin": "^8.67.0",
47
+ "@typescript-eslint/parser": "^8.67.0",
48
+ "@vitest/coverage-v8": "^3.2.4",
49
+ "eslint": "^10.0.0",
50
+ "prettier": "^3.5.3",
51
+ "semantic-release": "^24.2.5",
52
+ "typescript": "^5.8.3",
53
+ "typescript-eslint": "^8.67.0",
54
+ "vitest": "^3.2.4"
55
+ }
56
+ }