@inlang/sdk 0.1.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 (170) hide show
  1. package/README.md +25 -0
  2. package/dist/adapter/solidAdapter.d.ts +32 -0
  3. package/dist/adapter/solidAdapter.d.ts.map +1 -0
  4. package/dist/adapter/solidAdapter.js +39 -0
  5. package/dist/adapter/solidAdapter.test.d.ts +2 -0
  6. package/dist/adapter/solidAdapter.test.d.ts.map +1 -0
  7. package/dist/adapter/solidAdapter.test.js +284 -0
  8. package/dist/api.d.ts +88 -0
  9. package/dist/api.d.ts.map +1 -0
  10. package/dist/api.js +1 -0
  11. package/dist/createMessageLintReportsQuery.d.ts +9 -0
  12. package/dist/createMessageLintReportsQuery.d.ts.map +1 -0
  13. package/dist/createMessageLintReportsQuery.js +48 -0
  14. package/dist/createMessagesQuery.d.ts +7 -0
  15. package/dist/createMessagesQuery.d.ts.map +1 -0
  16. package/dist/createMessagesQuery.js +57 -0
  17. package/dist/createMessagesQuery.test.d.ts +2 -0
  18. package/dist/createMessagesQuery.test.d.ts.map +1 -0
  19. package/dist/createMessagesQuery.test.js +304 -0
  20. package/dist/errors.d.ts +22 -0
  21. package/dist/errors.d.ts.map +1 -0
  22. package/dist/errors.js +39 -0
  23. package/dist/index.d.ts +15 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +13 -0
  26. package/dist/lint/index.d.ts +3 -0
  27. package/dist/lint/index.d.ts.map +1 -0
  28. package/dist/lint/index.js +2 -0
  29. package/dist/lint/message/errors.d.ts +7 -0
  30. package/dist/lint/message/errors.d.ts.map +1 -0
  31. package/dist/lint/message/errors.js +9 -0
  32. package/dist/lint/message/lintMessages.d.ts +17 -0
  33. package/dist/lint/message/lintMessages.d.ts.map +1 -0
  34. package/dist/lint/message/lintMessages.js +12 -0
  35. package/dist/lint/message/lintMessages.test.d.ts +2 -0
  36. package/dist/lint/message/lintMessages.test.d.ts.map +1 -0
  37. package/dist/lint/message/lintMessages.test.js +105 -0
  38. package/dist/lint/message/lintSingleMessage.d.ts +23 -0
  39. package/dist/lint/message/lintSingleMessage.d.ts.map +1 -0
  40. package/dist/lint/message/lintSingleMessage.js +36 -0
  41. package/dist/lint/message/lintSingleMessage.test.d.ts +2 -0
  42. package/dist/lint/message/lintSingleMessage.test.d.ts.map +1 -0
  43. package/dist/lint/message/lintSingleMessage.test.js +155 -0
  44. package/dist/messages/errors.d.ts +13 -0
  45. package/dist/messages/errors.d.ts.map +1 -0
  46. package/dist/messages/errors.js +18 -0
  47. package/dist/messages/index.d.ts +3 -0
  48. package/dist/messages/index.d.ts.map +1 -0
  49. package/dist/messages/index.js +2 -0
  50. package/dist/messages/variant.d.ts +46 -0
  51. package/dist/messages/variant.d.ts.map +1 -0
  52. package/dist/messages/variant.js +177 -0
  53. package/dist/messages/variant.test.d.ts +2 -0
  54. package/dist/messages/variant.test.d.ts.map +1 -0
  55. package/dist/messages/variant.test.js +379 -0
  56. package/dist/openInlangProject.d.ts +18 -0
  57. package/dist/openInlangProject.d.ts.map +1 -0
  58. package/dist/openInlangProject.js +226 -0
  59. package/dist/openInlangProject.test.d.ts +2 -0
  60. package/dist/openInlangProject.test.d.ts.map +1 -0
  61. package/dist/openInlangProject.test.js +627 -0
  62. package/dist/parseConfig.d.ts +8 -0
  63. package/dist/parseConfig.d.ts.map +1 -0
  64. package/dist/parseConfig.js +26 -0
  65. package/dist/reactivity/map.d.ts +66 -0
  66. package/dist/reactivity/map.d.ts.map +1 -0
  67. package/dist/reactivity/map.js +143 -0
  68. package/dist/reactivity/solid.d.ts +12 -0
  69. package/dist/reactivity/solid.d.ts.map +1 -0
  70. package/dist/reactivity/solid.js +13 -0
  71. package/dist/reactivity/trigger.d.ts +11 -0
  72. package/dist/reactivity/trigger.d.ts.map +1 -0
  73. package/dist/reactivity/trigger.js +46 -0
  74. package/dist/resolve-modules/errors.d.ts +34 -0
  75. package/dist/resolve-modules/errors.d.ts.map +1 -0
  76. package/dist/resolve-modules/errors.js +35 -0
  77. package/dist/resolve-modules/import.d.ts +35 -0
  78. package/dist/resolve-modules/import.d.ts.map +1 -0
  79. package/dist/resolve-modules/import.js +40 -0
  80. package/dist/resolve-modules/import.test.d.ts +2 -0
  81. package/dist/resolve-modules/import.test.d.ts.map +1 -0
  82. package/dist/resolve-modules/import.test.js +45 -0
  83. package/dist/resolve-modules/index.d.ts +3 -0
  84. package/dist/resolve-modules/index.d.ts.map +1 -0
  85. package/dist/resolve-modules/index.js +2 -0
  86. package/dist/resolve-modules/message-lint-rules/errors.d.ts +8 -0
  87. package/dist/resolve-modules/message-lint-rules/errors.d.ts.map +1 -0
  88. package/dist/resolve-modules/message-lint-rules/errors.js +8 -0
  89. package/dist/resolve-modules/message-lint-rules/resolveMessageLintRules.d.ts +9 -0
  90. package/dist/resolve-modules/message-lint-rules/resolveMessageLintRules.d.ts.map +1 -0
  91. package/dist/resolve-modules/message-lint-rules/resolveMessageLintRules.js +21 -0
  92. package/dist/resolve-modules/plugins/errors.d.ts +28 -0
  93. package/dist/resolve-modules/plugins/errors.d.ts.map +1 -0
  94. package/dist/resolve-modules/plugins/errors.js +44 -0
  95. package/dist/resolve-modules/plugins/resolvePlugins.d.ts +3 -0
  96. package/dist/resolve-modules/plugins/resolvePlugins.d.ts.map +1 -0
  97. package/dist/resolve-modules/plugins/resolvePlugins.js +108 -0
  98. package/dist/resolve-modules/plugins/resolvePlugins.test.d.ts +2 -0
  99. package/dist/resolve-modules/plugins/resolvePlugins.test.d.ts.map +1 -0
  100. package/dist/resolve-modules/plugins/resolvePlugins.test.js +289 -0
  101. package/dist/resolve-modules/plugins/types.d.ts +60 -0
  102. package/dist/resolve-modules/plugins/types.d.ts.map +1 -0
  103. package/dist/resolve-modules/plugins/types.js +1 -0
  104. package/dist/resolve-modules/plugins/types.test.d.ts +2 -0
  105. package/dist/resolve-modules/plugins/types.test.d.ts.map +1 -0
  106. package/dist/resolve-modules/plugins/types.test.js +49 -0
  107. package/dist/resolve-modules/resolveModules.d.ts +3 -0
  108. package/dist/resolve-modules/resolveModules.d.ts.map +1 -0
  109. package/dist/resolve-modules/resolveModules.js +70 -0
  110. package/dist/resolve-modules/resolveModules.test.d.ts +2 -0
  111. package/dist/resolve-modules/resolveModules.test.d.ts.map +1 -0
  112. package/dist/resolve-modules/resolveModules.test.js +143 -0
  113. package/dist/resolve-modules/types.d.ts +62 -0
  114. package/dist/resolve-modules/types.d.ts.map +1 -0
  115. package/dist/resolve-modules/types.js +1 -0
  116. package/dist/test-utilities/createMessage.d.ts +17 -0
  117. package/dist/test-utilities/createMessage.d.ts.map +1 -0
  118. package/dist/test-utilities/createMessage.js +16 -0
  119. package/dist/test-utilities/createMessage.test.d.ts +2 -0
  120. package/dist/test-utilities/createMessage.test.d.ts.map +1 -0
  121. package/dist/test-utilities/createMessage.test.js +91 -0
  122. package/dist/test-utilities/index.d.ts +2 -0
  123. package/dist/test-utilities/index.d.ts.map +1 -0
  124. package/dist/test-utilities/index.js +1 -0
  125. package/dist/versionedInterfaces.d.ts +8 -0
  126. package/dist/versionedInterfaces.d.ts.map +1 -0
  127. package/dist/versionedInterfaces.js +8 -0
  128. package/package.json +58 -0
  129. package/src/adapter/solidAdapter.test.ts +363 -0
  130. package/src/adapter/solidAdapter.ts +77 -0
  131. package/src/api.ts +86 -0
  132. package/src/createMessageLintReportsQuery.ts +77 -0
  133. package/src/createMessagesQuery.test.ts +435 -0
  134. package/src/createMessagesQuery.ts +64 -0
  135. package/src/errors.ts +46 -0
  136. package/src/index.ts +29 -0
  137. package/src/lint/index.ts +2 -0
  138. package/src/lint/message/errors.ts +9 -0
  139. package/src/lint/message/lintMessages.test.ts +122 -0
  140. package/src/lint/message/lintMessages.ts +33 -0
  141. package/src/lint/message/lintSingleMessage.test.ts +183 -0
  142. package/src/lint/message/lintSingleMessage.ts +62 -0
  143. package/src/messages/errors.ts +25 -0
  144. package/src/messages/index.ts +2 -0
  145. package/src/messages/variant.test.ts +444 -0
  146. package/src/messages/variant.ts +242 -0
  147. package/src/openInlangProject.test.ts +734 -0
  148. package/src/openInlangProject.ts +337 -0
  149. package/src/parseConfig.ts +33 -0
  150. package/src/reactivity/map.ts +135 -0
  151. package/src/reactivity/solid.ts +36 -0
  152. package/src/reactivity/trigger.ts +46 -0
  153. package/src/resolve-modules/errors.ts +39 -0
  154. package/src/resolve-modules/import.test.ts +58 -0
  155. package/src/resolve-modules/import.ts +69 -0
  156. package/src/resolve-modules/index.ts +2 -0
  157. package/src/resolve-modules/message-lint-rules/errors.ts +9 -0
  158. package/src/resolve-modules/message-lint-rules/resolveMessageLintRules.ts +24 -0
  159. package/src/resolve-modules/plugins/errors.ts +57 -0
  160. package/src/resolve-modules/plugins/resolvePlugins.test.ts +340 -0
  161. package/src/resolve-modules/plugins/resolvePlugins.ts +170 -0
  162. package/src/resolve-modules/plugins/types.test.ts +57 -0
  163. package/src/resolve-modules/plugins/types.ts +77 -0
  164. package/src/resolve-modules/resolveModules.test.ts +176 -0
  165. package/src/resolve-modules/resolveModules.ts +97 -0
  166. package/src/resolve-modules/types.ts +71 -0
  167. package/src/test-utilities/createMessage.test.ts +100 -0
  168. package/src/test-utilities/createMessage.ts +20 -0
  169. package/src/test-utilities/index.ts +1 -0
  170. package/src/versionedInterfaces.ts +9 -0
@@ -0,0 +1,66 @@
1
+ declare var ReactiveMap: {
2
+ new (initial: any): {
3
+ "__#2@#keyTriggers": {
4
+ "__#1@#map": Map<any, any>;
5
+ dirty(key: any): void;
6
+ track(key: any): void;
7
+ };
8
+ "__#2@#valueTriggers": {
9
+ "__#1@#map": Map<any, any>;
10
+ dirty(key: any): void;
11
+ track(key: any): void;
12
+ };
13
+ has(key: any): boolean;
14
+ get(key: any): any;
15
+ readonly size: number;
16
+ keys(): IterableIterator<any>;
17
+ values(): IterableIterator<any>;
18
+ entries(): IterableIterator<[any, any]>;
19
+ set(key: any, value: any): any;
20
+ delete(key: any): boolean;
21
+ clear(): void;
22
+ forEach(callbackfn: any): void;
23
+ [Symbol.iterator](): IterableIterator<[any, any]>;
24
+ readonly [Symbol.toStringTag]: string;
25
+ };
26
+ readonly [Symbol.species]: MapConstructor;
27
+ };
28
+ declare var ReactiveWeakMap: {
29
+ new (initial: any): {
30
+ "__#3@#keyTriggers": {
31
+ "__#1@#map": Map<any, any>;
32
+ dirty(key: any): void;
33
+ track(key: any): void;
34
+ };
35
+ "__#3@#valueTriggers": {
36
+ "__#1@#map": Map<any, any>;
37
+ dirty(key: any): void;
38
+ track(key: any): void;
39
+ };
40
+ has(key: any): boolean;
41
+ get(key: any): any;
42
+ set(key: any, value: any): any;
43
+ delete(key: any): boolean;
44
+ readonly [Symbol.toStringTag]: string;
45
+ };
46
+ };
47
+ declare function createMap(initial: any): () => [any, any][];
48
+ declare function createWeakMap(initial: any): {
49
+ "__#3@#keyTriggers": {
50
+ "__#1@#map": Map<any, any>;
51
+ dirty(key: any): void;
52
+ track(key: any): void;
53
+ };
54
+ "__#3@#valueTriggers": {
55
+ "__#1@#map": Map<any, any>;
56
+ dirty(key: any): void;
57
+ track(key: any): void;
58
+ };
59
+ has(key: any): boolean;
60
+ get(key: any): any;
61
+ set(key: any, value: any): any;
62
+ delete(key: any): boolean;
63
+ readonly [Symbol.toStringTag]: string;
64
+ };
65
+ export { ReactiveMap, ReactiveWeakMap, createMap, createWeakMap };
66
+ //# sourceMappingURL=map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/reactivity/map.ts"],"names":[],"mappings":"AAQA,QAAA,IAAI,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Ed,CAAA;AACD,QAAA,IAAI,eAAe;;;;;;;;;;;;;;;;;;CAmClB,CAAA;AACD,iBAAS,SAAS,CAAC,OAAO,KAAA,sBAKzB;AACD,iBAAS,aAAa,CAAC,OAAO,KAAA;;;;;;;;;;;;;;;;EAE7B;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,143 @@
1
+ // @ts-nocheck
2
+ /* eslint-disable */
3
+ import { batch } from "./solid.js";
4
+ import { TriggerCache } from "./trigger.js";
5
+ // src/index.ts
6
+ var $KEYS = Symbol("track-keys");
7
+ var ReactiveMap = class extends Map {
8
+ #keyTriggers = new TriggerCache();
9
+ #valueTriggers = new TriggerCache();
10
+ constructor(initial) {
11
+ super();
12
+ if (initial)
13
+ for (const v of initial)
14
+ super.set(v[0], v[1]);
15
+ }
16
+ // reads
17
+ has(key) {
18
+ this.#keyTriggers.track(key);
19
+ return super.has(key);
20
+ }
21
+ get(key) {
22
+ this.#valueTriggers.track(key);
23
+ return super.get(key);
24
+ }
25
+ get size() {
26
+ this.#keyTriggers.track($KEYS);
27
+ return super.size;
28
+ }
29
+ keys() {
30
+ this.#keyTriggers.track($KEYS);
31
+ return super.keys();
32
+ }
33
+ values() {
34
+ this.#keyTriggers.track($KEYS);
35
+ for (const v of super.keys())
36
+ this.#valueTriggers.track(v);
37
+ return super.values();
38
+ }
39
+ entries() {
40
+ this.#keyTriggers.track($KEYS);
41
+ for (const v of super.keys())
42
+ this.#valueTriggers.track(v);
43
+ return super.entries();
44
+ }
45
+ // writes
46
+ set(key, value) {
47
+ batch(() => {
48
+ if (super.has(key)) {
49
+ if (super.get(key) === value)
50
+ return;
51
+ }
52
+ else {
53
+ this.#keyTriggers.dirty(key);
54
+ this.#keyTriggers.dirty($KEYS);
55
+ }
56
+ this.#valueTriggers.dirty(key);
57
+ super.set(key, value);
58
+ });
59
+ return this;
60
+ }
61
+ delete(key) {
62
+ const r = super.delete(key);
63
+ if (r) {
64
+ batch(() => {
65
+ this.#keyTriggers.dirty(key);
66
+ this.#keyTriggers.dirty($KEYS);
67
+ this.#valueTriggers.dirty(key);
68
+ });
69
+ }
70
+ return r;
71
+ }
72
+ clear() {
73
+ if (super.size) {
74
+ batch(() => {
75
+ for (const v of super.keys()) {
76
+ this.#keyTriggers.dirty(v);
77
+ this.#valueTriggers.dirty(v);
78
+ }
79
+ super.clear();
80
+ this.#keyTriggers.dirty($KEYS);
81
+ });
82
+ }
83
+ }
84
+ // callback
85
+ forEach(callbackfn) {
86
+ this.#keyTriggers.track($KEYS);
87
+ super.forEach((value, key) => callbackfn(value, key, this));
88
+ }
89
+ [Symbol.iterator]() {
90
+ return this.entries();
91
+ }
92
+ };
93
+ var ReactiveWeakMap = class extends WeakMap {
94
+ #keyTriggers = new TriggerCache(WeakMap);
95
+ #valueTriggers = new TriggerCache(WeakMap);
96
+ constructor(initial) {
97
+ super();
98
+ if (initial)
99
+ for (const v of initial)
100
+ super.set(v[0], v[1]);
101
+ }
102
+ has(key) {
103
+ this.#keyTriggers.track(key);
104
+ return super.has(key);
105
+ }
106
+ get(key) {
107
+ this.#valueTriggers.track(key);
108
+ return super.get(key);
109
+ }
110
+ set(key, value) {
111
+ batch(() => {
112
+ if (super.has(key)) {
113
+ if (super.get(key) === value)
114
+ return;
115
+ }
116
+ else
117
+ this.#keyTriggers.dirty(key);
118
+ this.#valueTriggers.dirty(key);
119
+ super.set(key, value);
120
+ });
121
+ return this;
122
+ }
123
+ delete(key) {
124
+ const r = super.delete(key);
125
+ if (r) {
126
+ batch(() => {
127
+ this.#keyTriggers.dirty(key);
128
+ this.#valueTriggers.dirty(key);
129
+ });
130
+ }
131
+ return r;
132
+ }
133
+ };
134
+ function createMap(initial) {
135
+ const map = new ReactiveMap(initial);
136
+ return new Proxy(() => [...map], {
137
+ get: (_, b) => map[b],
138
+ });
139
+ }
140
+ function createWeakMap(initial) {
141
+ return new ReactiveWeakMap(initial);
142
+ }
143
+ export { ReactiveMap, ReactiveWeakMap, createMap, createWeakMap };
@@ -0,0 +1,12 @@
1
+ import { DEV } from "solid-js/dist/solid.js";
2
+ declare const createSignal: typeof import("solid-js").createSignal;
3
+ declare const createMemo: typeof import("solid-js").createMemo;
4
+ declare const createRoot: typeof import("solid-js").createRoot;
5
+ declare const createEffect: typeof import("solid-js").createEffect;
6
+ declare const observable: typeof import("solid-js").observable;
7
+ declare const from: typeof import("solid-js").from;
8
+ declare const batch: typeof import("solid-js").batch;
9
+ declare const getListener: typeof import("solid-js").getListener;
10
+ declare const onCleanup: typeof import("solid-js").onCleanup;
11
+ export { createSignal, createMemo, createRoot, createEffect, observable, from, batch, getListener, onCleanup, DEV, };
12
+ //# sourceMappingURL=solid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../../src/reactivity/solid.ts"],"names":[],"mappings":"AAAA,OAAO,EAUN,GAAG,EAEH,MAAM,wBAAwB,CAAA;AAE/B,QAAA,MAAM,YAAY,wCAA6D,CAAA;AAC/E,QAAA,MAAM,UAAU,sCAAyD,CAAA;AACzE,QAAA,MAAM,UAAU,sCAAyD,CAAA;AACzE,QAAA,MAAM,YAAY,wCAA6D,CAAA;AAC/E,QAAA,MAAM,UAAU,sCAAyD,CAAA;AACzE,QAAA,MAAM,IAAI,gCAA6C,CAAA;AACvD,QAAA,MAAM,KAAK,iCAA+C,CAAA;AAC1D,QAAA,MAAM,WAAW,uCAA2D,CAAA;AAC5E,QAAA,MAAM,SAAS,qCAAuD,CAAA;AAEtE,OAAO,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,IAAI,EACJ,KAAK,EACL,WAAW,EACX,SAAS,EACT,GAAG,GACH,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { createSignal as _createSignal, createMemo as _createMemo, createRoot as _createRoot, createEffect as _createEffect, observable as _observable, batch as _batch, from as _from, getListener as _getListener, onCleanup as _onCleanup, DEV,
2
+ // @ts-ignore
3
+ } from "solid-js/dist/solid.js";
4
+ const createSignal = _createSignal;
5
+ const createMemo = _createMemo;
6
+ const createRoot = _createRoot;
7
+ const createEffect = _createEffect;
8
+ const observable = _observable;
9
+ const from = _from;
10
+ const batch = _batch;
11
+ const getListener = _getListener;
12
+ const onCleanup = _onCleanup;
13
+ export { createSignal, createMemo, createRoot, createEffect, observable, from, batch, getListener, onCleanup, DEV, };
@@ -0,0 +1,11 @@
1
+ declare function createTrigger(): (() => void)[];
2
+ declare var TriggerCache: {
3
+ new (mapConstructor?: MapConstructor): {
4
+ "__#1@#map": Map<any, any>;
5
+ dirty(key: any): void;
6
+ track(key: any): void;
7
+ };
8
+ };
9
+ declare function createTriggerCache(mapConstructor?: MapConstructor): ((key: any) => void)[];
10
+ export { TriggerCache, createTrigger, createTriggerCache };
11
+ //# sourceMappingURL=trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../src/reactivity/trigger.ts"],"names":[],"mappings":"AAYA,iBAAS,aAAa,mBAKrB;AACD,QAAA,IAAI,YAAY;;;;;;CAqBf,CAAA;AACD,iBAAS,kBAAkB,CAAC,cAAc,iBAAM,0BAG/C;AAED,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAA"}
@@ -0,0 +1,46 @@
1
+ // @ts-nocheck
2
+ /* eslint-disable */
3
+ import { createSignal, getListener, onCleanup, DEV } from "./solid.js";
4
+ const noop = () => { };
5
+ const isServer = false;
6
+ // src/index.ts
7
+ var triggerOptions = !isServer && DEV ? { equals: false, name: "trigger" } : { equals: false };
8
+ var triggerCacheOptions = !isServer && DEV ? { equals: false, internal: true } : triggerOptions;
9
+ function createTrigger() {
10
+ if (isServer) {
11
+ return [noop, noop];
12
+ }
13
+ return createSignal(void 0, triggerOptions);
14
+ }
15
+ var TriggerCache = class {
16
+ #map;
17
+ constructor(mapConstructor = Map) {
18
+ this.#map = new mapConstructor();
19
+ }
20
+ dirty(key) {
21
+ if (isServer)
22
+ return;
23
+ this.#map.get(key)?.$$();
24
+ }
25
+ track(key) {
26
+ if (!getListener())
27
+ return;
28
+ let trigger = this.#map.get(key);
29
+ if (!trigger) {
30
+ const [$, $$] = createSignal(void 0, triggerCacheOptions);
31
+ this.#map.set(key, (trigger = { $, $$, n: 1 }));
32
+ }
33
+ else
34
+ trigger.n++;
35
+ onCleanup(() => {
36
+ if (trigger.n-- === 1)
37
+ queueMicrotask(() => trigger.n === 0 && this.#map.delete(key));
38
+ });
39
+ trigger.$();
40
+ }
41
+ };
42
+ function createTriggerCache(mapConstructor = Map) {
43
+ const map = new TriggerCache(mapConstructor);
44
+ return [map.track.bind(map), map.dirty.bind(map)];
45
+ }
46
+ export { TriggerCache, createTrigger, createTriggerCache };
@@ -0,0 +1,34 @@
1
+ export * from "./plugins/errors.js";
2
+ export * from "./message-lint-rules/errors.js";
3
+ export declare class ModuleError extends Error {
4
+ readonly Module: string;
5
+ constructor(message: string, options: {
6
+ module: string;
7
+ cause?: Error;
8
+ });
9
+ }
10
+ /**
11
+ * Error when a Module does not export any plugins or lint rules.
12
+ */
13
+ export declare class ModuleHasNoExportsError extends ModuleError {
14
+ constructor(message: string, options: {
15
+ module: string;
16
+ cause?: Error;
17
+ });
18
+ }
19
+ /**
20
+ * Error when a Module cannot be imported.
21
+ */
22
+ export declare class ModuleImportError extends ModuleError {
23
+ constructor(message: string, options: {
24
+ module: string;
25
+ cause: Error;
26
+ });
27
+ }
28
+ export declare class ModuleExportIsInvalidError extends ModuleError {
29
+ constructor(message: string, options: {
30
+ module: string;
31
+ cause?: Error;
32
+ });
33
+ }
34
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/resolve-modules/errors.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,gCAAgC,CAAA;AAE9C,qBAAa,WAAY,SAAQ,KAAK;IACrC,SAAgB,MAAM,EAAE,MAAM,CAAA;gBAClB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAMvE;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,WAAW;gBAC3C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIvE;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;gBACrC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE;CAItE;AAED,qBAAa,0BAA2B,SAAQ,WAAW;gBAC9C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIvE"}
@@ -0,0 +1,35 @@
1
+ export * from "./plugins/errors.js";
2
+ export * from "./message-lint-rules/errors.js";
3
+ export class ModuleError extends Error {
4
+ Module;
5
+ constructor(message, options) {
6
+ super(message);
7
+ this.name = "ModuleError";
8
+ this.Module = options.module;
9
+ this.cause = options.cause;
10
+ }
11
+ }
12
+ /**
13
+ * Error when a Module does not export any plugins or lint rules.
14
+ */
15
+ export class ModuleHasNoExportsError extends ModuleError {
16
+ constructor(message, options) {
17
+ super(message, options);
18
+ this.name = "ModuleHasNoExportsError";
19
+ }
20
+ }
21
+ /**
22
+ * Error when a Module cannot be imported.
23
+ */
24
+ export class ModuleImportError extends ModuleError {
25
+ constructor(message, options) {
26
+ super(message, options);
27
+ this.name = "ModuleImportError";
28
+ }
29
+ }
30
+ export class ModuleExportIsInvalidError extends ModuleError {
31
+ constructor(message, options) {
32
+ super(message, options);
33
+ this.name = "ModuleExportIsInvalidError";
34
+ }
35
+ }
@@ -0,0 +1,35 @@
1
+ import type { NodeishFilesystemSubset } from "@inlang/plugin";
2
+ /**
3
+ * Importing ES modules either from a local path, or from a url.
4
+ *
5
+ * - Name the import function `_import` to avoid shadowing the
6
+ * native import function.
7
+ */
8
+ export type ImportFunction = (uri: string) => Promise<any>;
9
+ /**
10
+ * Creates the import function.
11
+ *
12
+ * This function is required to import modules from a local path.
13
+ *
14
+ * @example
15
+ * const $import = createImport({ readFile: fs.readFile, fetch });
16
+ * const module = await _import('./some-module.js');
17
+ */
18
+ export declare function createImport(args: {
19
+ /** the fs from which the file can be read */
20
+ readFile: NodeishFilesystemSubset["readFile"];
21
+ /** http client implementation */
22
+ fetch: typeof fetch;
23
+ }): (uri: string) => ReturnType<typeof $import>;
24
+ declare function $import(uri: string, options: {
25
+ /**
26
+ * Required to import from a local path.
27
+ */
28
+ readFile: NodeishFilesystemSubset["readFile"];
29
+ /**
30
+ * Required to import via network.
31
+ */
32
+ fetch: typeof fetch;
33
+ }): Promise<any>;
34
+ export {};
35
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/resolve-modules/import.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAG7D;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;AAE1D;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAClC,6CAA6C;IAC7C,QAAQ,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAA;IAC7C,iCAAiC;IACjC,KAAK,EAAE,OAAO,KAAK,CAAA;CACnB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,OAAO,CAAC,CAG9C;AAED,iBAAe,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IACR;;OAEG;IACH,QAAQ,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAA;IAC7C;;OAEG;IACH,KAAK,EAAE,OAAO,KAAK,CAAA;CACnB,GACC,OAAO,CAAC,GAAG,CAAC,CAwBd"}
@@ -0,0 +1,40 @@
1
+ import { dedent } from "ts-dedent";
2
+ import { normalizePath } from "@lix-js/fs";
3
+ import { ModuleImportError } from "./errors.js";
4
+ /**
5
+ * Creates the import function.
6
+ *
7
+ * This function is required to import modules from a local path.
8
+ *
9
+ * @example
10
+ * const $import = createImport({ readFile: fs.readFile, fetch });
11
+ * const module = await _import('./some-module.js');
12
+ */
13
+ export function createImport(args) {
14
+ // resembles a native import api
15
+ return (uri) => $import(uri, args);
16
+ }
17
+ async function $import(uri, options) {
18
+ let moduleAsText;
19
+ if (uri.startsWith("http")) {
20
+ moduleAsText = await (await options.fetch(uri)).text();
21
+ }
22
+ else {
23
+ moduleAsText = await options.readFile(normalizePath(uri), { encoding: "utf-8" });
24
+ }
25
+ const moduleWithMimeType = "data:application/javascript," + encodeURIComponent(moduleAsText);
26
+ try {
27
+ return await import(/* @vite-ignore */ moduleWithMimeType);
28
+ }
29
+ catch (error) {
30
+ let message = `Error while importing ${uri}: ${error?.message ?? "Unknown error"}`;
31
+ if (error instanceof SyntaxError && uri.includes("jsdelivr")) {
32
+ message += dedent `\n\n
33
+ Are you sure that the file exists on JSDelivr?
34
+
35
+ The error indicates that the imported file does not exist on JSDelivr. For non-existent files, JSDelivr returns a 404 text that JS cannot parse as a module and throws a SyntaxError.
36
+ `;
37
+ }
38
+ throw new ModuleImportError(message, { module: uri, cause: error });
39
+ }
40
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=import.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.test.d.ts","sourceRoot":"","sources":["../../src/resolve-modules/import.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ // @vitest-environment jsdom
2
+ import { createNodeishMemoryFs } from "@lix-js/fs";
3
+ import { describe, expect, it } from "vitest";
4
+ import { createImport } from "./import.js";
5
+ describe("$import", async () => {
6
+ const fs = createNodeishMemoryFs();
7
+ await fs.writeFile("./mock-module.js", `
8
+ export function hello() {
9
+ return "hello";
10
+ }
11
+ `);
12
+ // mock module in a directory
13
+ await fs.mkdir("./nested");
14
+ await fs.writeFile("./nested/mock-module-two.js", `
15
+ export function hello() {
16
+ return "world";
17
+ }
18
+ `);
19
+ const _import = createImport({
20
+ readFile: fs.readFile,
21
+ fetch,
22
+ });
23
+ it("should import a module from a local path", async () => {
24
+ const module = await _import("./mock-module.js");
25
+ expect(module.hello()).toBe("hello");
26
+ });
27
+ it("should import a module from a nested local path", async () => {
28
+ const module = await _import("./nested/mock-module-two.js");
29
+ expect(module.hello()).toBe("world");
30
+ });
31
+ it("should import an ES module from a url", async () => {
32
+ const module = await _import("https://cdn.jsdelivr.net/npm/normalize-url@7.2.0/index.js");
33
+ const normalizeUrl = module.default;
34
+ expect(normalizeUrl("inlang.com")).toBe("http://inlang.com");
35
+ });
36
+ it("should throw if a module is loaded that is not an ES module", async () => {
37
+ try {
38
+ await _import("https://cdn.jsdelivr.net/npm/lodash@4.17.21");
39
+ throw "function did not throw";
40
+ }
41
+ catch {
42
+ expect(true).toBe(true);
43
+ }
44
+ });
45
+ });
@@ -0,0 +1,3 @@
1
+ export { resolveModules } from "./resolveModules.js";
2
+ export { type ImportFunction, createImport } from "./import.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolve-modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,KAAK,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { resolveModules } from "./resolveModules.js";
2
+ export { createImport } from "./import.js";
@@ -0,0 +1,8 @@
1
+ export declare class MessageLintRuleIsInvalidError extends Error {
2
+ readonly module: string;
3
+ constructor(message: string, options: {
4
+ module: string;
5
+ cause?: Error;
6
+ });
7
+ }
8
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/resolve-modules/message-lint-rules/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,6BAA8B,SAAQ,KAAK;IACvD,SAAgB,MAAM,EAAE,MAAM,CAAA;gBAElB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAKvE"}
@@ -0,0 +1,8 @@
1
+ export class MessageLintRuleIsInvalidError extends Error {
2
+ module;
3
+ constructor(message, options) {
4
+ super(message);
5
+ this.module = options.module;
6
+ this.name = "MessageLintRuleIsInvalidError";
7
+ }
8
+ }
@@ -0,0 +1,9 @@
1
+ import { MessageLintRule } from "@inlang/message-lint-rule";
2
+ import { MessageLintRuleIsInvalidError } from "./errors.js";
3
+ export declare const resolveMessageLintRules: (args: {
4
+ messageLintRules: Array<MessageLintRule>;
5
+ }) => {
6
+ data: MessageLintRule[];
7
+ errors: MessageLintRuleIsInvalidError[];
8
+ };
9
+ //# sourceMappingURL=resolveMessageLintRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveMessageLintRules.d.ts","sourceRoot":"","sources":["../../../src/resolve-modules/message-lint-rules/resolveMessageLintRules.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAE3D,eAAO,MAAM,uBAAuB,SAAU;IAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC,CAAA;CAAE;;;CAmBzF,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { Value } from "@sinclair/typebox/value";
2
+ import { MessageLintRule } from "@inlang/message-lint-rule";
3
+ import { MessageLintRuleIsInvalidError } from "./errors.js";
4
+ export const resolveMessageLintRules = (args) => {
5
+ const result = {
6
+ data: [],
7
+ errors: [],
8
+ };
9
+ for (const rule of args.messageLintRules) {
10
+ if (Value.Check(MessageLintRule, rule) === false) {
11
+ result.errors.push(new MessageLintRuleIsInvalidError(`Couldn't parse lint rule "${rule.meta.id}"`, {
12
+ module: "not implemented",
13
+ }));
14
+ continue;
15
+ }
16
+ else {
17
+ result.data.push(rule);
18
+ }
19
+ }
20
+ return result;
21
+ };
@@ -0,0 +1,28 @@
1
+ import type { Plugin } from "@inlang/plugin";
2
+ type PluginErrorOptions = {
3
+ plugin: Plugin["meta"]["id"];
4
+ } & Partial<Error>;
5
+ declare class PluginError extends Error {
6
+ readonly plugin: string;
7
+ constructor(message: string, options: PluginErrorOptions);
8
+ }
9
+ export declare class PluginHasInvalidIdError extends PluginError {
10
+ constructor(message: string, options: PluginErrorOptions);
11
+ }
12
+ export declare class PluginUsesReservedNamespaceError extends PluginError {
13
+ constructor(message: string, options: PluginErrorOptions);
14
+ }
15
+ export declare class PluginHasInvalidSchemaError extends PluginError {
16
+ constructor(message: string, options: PluginErrorOptions);
17
+ }
18
+ export declare class PluginLoadMessagesFunctionAlreadyDefinedError extends PluginError {
19
+ constructor(message: string, options: PluginErrorOptions);
20
+ }
21
+ export declare class PluginSaveMessagesFunctionAlreadyDefinedError extends PluginError {
22
+ constructor(message: string, options: PluginErrorOptions);
23
+ }
24
+ export declare class PluginReturnedInvalidCustomApiError extends PluginError {
25
+ constructor(message: string, options: PluginErrorOptions);
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/resolve-modules/plugins/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,KAAK,kBAAkB,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;CAC5B,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;AAElB,cAAM,WAAY,SAAQ,KAAK;IAC9B,SAAgB,MAAM,EAAE,MAAM,CAAA;gBAElB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAKxD;AAED,qBAAa,uBAAwB,SAAQ,WAAW;gBAC3C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,gCAAiC,SAAQ,WAAW;gBACpD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,2BAA4B,SAAQ,WAAW;gBAC/C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,6CAA8C,SAAQ,WAAW;gBACjE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,6CAA8C,SAAQ,WAAW;gBACjE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,mCAAoC,SAAQ,WAAW;gBACvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD"}