sonamu 0.7.18 → 0.7.20
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/dist/api/config.d.ts +21 -3
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +1 -1
- package/dist/api/context.d.ts +3 -3
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +1 -1
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +4 -8
- package/dist/api/index.d.ts +0 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -3
- package/dist/api/sonamu.d.ts +5 -3
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +10 -8
- package/dist/bin/cli.js +3 -3
- package/dist/database/db.d.ts +2 -2
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +23 -30
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/storage/drivers.d.ts +14 -0
- package/dist/storage/drivers.d.ts.map +1 -0
- package/dist/storage/drivers.js +11 -0
- package/dist/storage/index.d.ts +5 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +6 -0
- package/dist/storage/storage-manager.d.ts +21 -0
- package/dist/storage/storage-manager.d.ts.map +1 -0
- package/dist/storage/storage-manager.js +33 -0
- package/dist/storage/types.d.ts +12 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +5 -0
- package/dist/storage/uploaded-file.d.ts +35 -0
- package/dist/storage/uploaded-file.d.ts.map +1 -0
- package/dist/storage/uploaded-file.js +58 -0
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/services.template.js +8 -5
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +4 -4
- package/dist/ui-web/assets/{index-DFqVuxOB.js → index-B87IyofX.js} +1 -1
- package/dist/ui-web/index.html +1 -1
- package/package.json +6 -1
- package/src/api/config.ts +21 -3
- package/src/api/context.ts +3 -3
- package/src/api/decorators.ts +3 -8
- package/src/api/index.ts +0 -2
- package/src/api/sonamu.ts +12 -9
- package/src/bin/cli.ts +2 -2
- package/src/database/db.ts +40 -43
- package/src/index.ts +0 -1
- package/src/storage/drivers.ts +15 -0
- package/src/storage/index.ts +5 -0
- package/src/storage/storage-manager.ts +39 -0
- package/src/storage/types.ts +12 -0
- package/src/storage/uploaded-file.ts +81 -0
- package/src/template/implementations/service.template.ts.txt +328 -0
- package/src/template/implementations/services.template.ts +7 -4
- package/src/testing/fixture-manager.ts +3 -4
- package/dist/file-storage/driver.d.ts +0 -48
- package/dist/file-storage/driver.d.ts.map +0 -1
- package/dist/file-storage/driver.js +0 -79
- package/dist/file-storage/file-storage.d.ts +0 -50
- package/dist/file-storage/file-storage.d.ts.map +0 -1
- package/dist/file-storage/file-storage.js +0 -75
- package/src/file-storage/driver.ts +0 -131
- package/src/file-storage/file-storage.ts +0 -100
package/dist/database/db.js
CHANGED
|
@@ -3,6 +3,12 @@ import knex from "knex";
|
|
|
3
3
|
import { assign } from "radashi";
|
|
4
4
|
import { Sonamu } from "../api/index.js";
|
|
5
5
|
import { TransactionContext } from "./transaction-context.js";
|
|
6
|
+
/**
|
|
7
|
+
* 여러 설정 객체를 순차적으로 deep merge합니다.
|
|
8
|
+
* undefined/null인 인자는 무시됩니다.
|
|
9
|
+
*/ function mergeConfigs(...configs) {
|
|
10
|
+
return configs.reduce((acc, config)=>config ? assign(acc, config) : acc, {});
|
|
11
|
+
}
|
|
6
12
|
export class DBClass {
|
|
7
13
|
wdb;
|
|
8
14
|
rdb;
|
|
@@ -87,36 +93,23 @@ export class DBClass {
|
|
|
87
93
|
...config.defaultOptions?.connection
|
|
88
94
|
}
|
|
89
95
|
}, config.defaultOptions);
|
|
90
|
-
//
|
|
91
|
-
const test = assign(defaultKnexConfig, {
|
|
92
|
-
connection: {
|
|
93
|
-
database: `${config.name}_test`,
|
|
94
|
-
...config.defaultOptions?.connection
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
// 개발 환경 설정
|
|
98
|
-
const devMasterOptions = config.environments?.development;
|
|
99
|
-
const devSlaveOptions = config.environments?.development_slave;
|
|
100
|
-
const development_master = assign(defaultKnexConfig, devMasterOptions ?? {});
|
|
101
|
-
const development_slave = assign(assign(defaultKnexConfig, devMasterOptions ?? {}), devSlaveOptions ?? {});
|
|
102
|
-
// NOTE: fixture remote는 default connection의 DB를 override해선 안됨.
|
|
103
|
-
const fixture_remote = assign(assign(assign(defaultKnexConfig, devMasterOptions ?? {}), {
|
|
104
|
-
connection: {
|
|
105
|
-
database: `${config.name}_fixture_remote`
|
|
106
|
-
}
|
|
107
|
-
}), config.environments?.remote_fixture ?? {});
|
|
108
|
-
// 프로덕션 환경 설정
|
|
109
|
-
const prodMasterOptions = config.environments?.production ?? {};
|
|
110
|
-
const prodSlaveOptions = config.environments?.production_slave ?? {};
|
|
111
|
-
const production_master = assign(defaultKnexConfig, prodMasterOptions);
|
|
112
|
-
const production_slave = assign(assign(defaultKnexConfig, prodMasterOptions), prodSlaveOptions ?? {});
|
|
96
|
+
// biome-ignore format: 설정 구조 가독성을 위해 여러 줄로 유지
|
|
113
97
|
return {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
98
|
+
// 여기에 나열한 순서대로 Sonamu UI의 DB Migration 탭에 표시됩니다.
|
|
99
|
+
test: mergeConfigs(defaultKnexConfig, {
|
|
100
|
+
connection: {
|
|
101
|
+
database: `${config.name}_test`
|
|
102
|
+
}
|
|
103
|
+
}, config.environments?.test),
|
|
104
|
+
fixture: mergeConfigs(defaultKnexConfig, {
|
|
105
|
+
connection: {
|
|
106
|
+
database: `${config.name}_fixture`
|
|
107
|
+
}
|
|
108
|
+
}, config.environments?.fixture),
|
|
109
|
+
development_master: mergeConfigs(defaultKnexConfig, config.environments?.development),
|
|
110
|
+
development_slave: mergeConfigs(defaultKnexConfig, config.environments?.development, config.environments?.development_slave),
|
|
111
|
+
production_master: mergeConfigs(defaultKnexConfig, config.environments?.production),
|
|
112
|
+
production_slave: mergeConfigs(defaultKnexConfig, config.environments?.production, config.environments?.production_slave)
|
|
120
113
|
};
|
|
121
114
|
}
|
|
122
115
|
// Test 환경에서 트랜잭션 사용
|
|
@@ -137,4 +130,4 @@ export class DBClass {
|
|
|
137
130
|
}
|
|
138
131
|
export const DB = new DBClass();
|
|
139
132
|
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9kYi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY0xvY2FsU3RvcmFnZSB9IGZyb20gXCJhc3luY19ob29rc1wiO1xuaW1wb3J0IGtuZXgsIHsgdHlwZSBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gXCJyYWRhc2hpXCI7XG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGlcIjtcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb25maWcsIFNvbmFtdUNvbmZpZyB9IGZyb20gXCIuLi9hcGkvY29uZmlnXCI7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkNvbnRleHQgfSBmcm9tIFwiLi90cmFuc2FjdGlvbi1jb250ZXh0XCI7XG5cbmV4cG9ydCB0eXBlIERCUHJlc2V0ID0gXCJ3XCIgfCBcInJcIjtcblxuZXhwb3J0IHR5cGUgU29uYW11REJDb25maWcgPSB7XG4gIGRldmVsb3BtZW50X21hc3RlcjogS25leC5Db25maWc7XG4gIGRldmVsb3BtZW50X3NsYXZlOiBLbmV4LkNvbmZpZztcbiAgdGVzdDogS25leC5Db25maWc7XG4gIGZpeHR1cmVfcmVtb3RlOiBLbmV4LkNvbmZpZztcbiAgcHJvZHVjdGlvbl9tYXN0ZXI6IEtuZXguQ29uZmlnO1xuICBwcm9kdWN0aW9uX3NsYXZlOiBLbmV4LkNvbmZpZztcbn07XG5cbmV4cG9ydCBjbGFzcyBEQkNsYXNzIHtcbiAgcHJpdmF0ZSB3ZGI/OiBLbmV4O1xuICBwcml2YXRlIHJkYj86IEtuZXg7XG5cbiAgcHVibGljIHRyYW5zYWN0aW9uU3RvcmFnZSA9IG5ldyBBc3luY0xvY2FsU3RvcmFnZTxUcmFuc2FjdGlvbkNvbnRleHQ+KCk7XG5cbiAgcHVibGljIHJ1bldpdGhUcmFuc2FjdGlvbjxUPihjYWxsYmFjazogKCkgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uU3RvcmFnZS5ydW4obmV3IFRyYW5zYWN0aW9uQ29udGV4dCgpLCBjYWxsYmFjayk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25Db250ZXh0KCk6IFRyYW5zYWN0aW9uQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb25TdG9yYWdlLmdldFN0b3JlKCkgPz8gbmV3IFRyYW5zYWN0aW9uQ29udGV4dCgpO1xuICB9XG5cbiAgZ2V0REIod2hpY2g6IERCUHJlc2V0KTogS25leCB7XG4gICAgY29uc3QgZGJDb25maWcgPSBTb25hbXUuZGJDb25maWc7XG5cbiAgICAvLyDthYzsiqTtirgg7Yq4656c7J6t7IWYIOqyqeumrFxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIGlmICh0aGlzLnRlc3RUcmFuc2FjdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXN0VHJhbnNhY3Rpb247XG4gICAgICB9IGVsc2UgaWYgKHRoaXMud2RiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndkYjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud2RiID0ga25leCh7XG4gICAgICAgICAgLi4uZGJDb25maWcudGVzdCxcbiAgICAgICAgICAvLyDri6jsnbwg7ZKAXG4gICAgICAgICAgcG9vbDoge1xuICAgICAgICAgICAgbWluOiAxLFxuICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy53ZGI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2VOYW1lID0gd2hpY2ggPT09IFwid1wiID8gXCJ3ZGJcIiA6IFwicmRiXCI7XG5cbiAgICBpZiAoIXRoaXNbaW5zdGFuY2VOYW1lXSkge1xuICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5nZXREQkNvbmZpZyh3aGljaCk7XG4gICAgICB0aGlzW2luc3RhbmNlTmFtZV0gPSBrbmV4KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNbaW5zdGFuY2VOYW1lXTtcbiAgfVxuXG4gIGdldERCQ29uZmlnKHdoaWNoOiBEQlByZXNldCk6IEtuZXguQ29uZmlnIHtcbiAgICBjb25zdCBkYkNvbmZpZyA9IFNvbmFtdS5kYkNvbmZpZztcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5kYkNvbmZpZy50ZXN0LFxuICAgICAgICAvLyDri6jsnbwg7ZKAXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICBtaW46IDEsXG4gICAgICAgICAgbWF4OiAxLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgc3dpdGNoIChwcm9jZXNzLmVudi5OT0RFX0VOViA/PyBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgIGNhc2UgXCJkZXZlbG9wbWVudFwiOlxuICAgICAgY2FzZSBcInN0YWdpbmdcIjpcbiAgICAgICAgcmV0dXJuIHdoaWNoID09PSBcIndcIlxuICAgICAgICAgID8gZGJDb25maWcuZGV2ZWxvcG1lbnRfbWFzdGVyXG4gICAgICAgICAgOiAoZGJDb25maWcuZGV2ZWxvcG1lbnRfc2xhdmUgPz8gZGJDb25maWcuZGV2ZWxvcG1lbnRfbWFzdGVyKTtcbiAgICAgIGNhc2UgXCJwcm9kdWN0aW9uXCI6XG4gICAgICAgIHJldHVybiB3aGljaCA9PT0gXCJ3XCJcbiAgICAgICAgICA/IGRiQ29uZmlnLnByb2R1Y3Rpb25fbWFzdGVyXG4gICAgICAgICAgOiAoZGJDb25maWcucHJvZHVjdGlvbl9zbGF2ZSA/PyBkYkNvbmZpZy5wcm9kdWN0aW9uX21hc3Rlcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYO2YhOyerCBFTlYgJHtwcm9jZXNzLmVudi5OT0RFX0VOVn3sl5DripQg7ISk7KCVIOqwgOuKpe2VnCBEQuyEpOygleydtCDsl4bsirXri4jri6QuYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy53ZGIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy53ZGIuZGVzdHJveSgpO1xuICAgICAgdGhpcy53ZGIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnJkYiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLnJkYi5kZXN0cm95KCk7XG4gICAgICB0aGlzLnJkYiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVEQkNvbmZpZyhjb25maWc6IFNvbmFtdUNvbmZpZ1tcImRhdGFiYXNlXCJdKTogU29uYW11REJDb25maWcge1xuICAgIGNvbnN0IGRlZmF1bHRLbmV4Q29uZmlnOiBQYXJ0aWFsPERhdGFiYXNlQ29uZmlnPiA9IGFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgY2xpZW50OiBcInBnXCIsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICBtaW46IDEsXG4gICAgICAgICAgbWF4OiA1LFxuICAgICAgICB9LFxuICAgICAgICBtaWdyYXRpb25zOiB7XG4gICAgICAgICAgZGlyZWN0b3J5OiBcIi4vc3JjL21pZ3JhdGlvbnNcIixcbiAgICAgICAgfSxcbiAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgIGRhdGFiYXNlOiBjb25maWcubmFtZSxcbiAgICAgICAgICAuLi5jb25maWcuZGVmYXVsdE9wdGlvbnM/LmNvbm5lY3Rpb24sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgY29uZmlnLmRlZmF1bHRPcHRpb25zLFxuICAgICk7XG5cbiAgICAvLyDroZzsu6wg7ZmY6rK9IOyEpOyglVxuICAgIGNvbnN0IHRlc3Q6IERhdGFiYXNlQ29uZmlnID0gYXNzaWduKGRlZmF1bHRLbmV4Q29uZmlnLCB7XG4gICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgIGRhdGFiYXNlOiBgJHtjb25maWcubmFtZX1fdGVzdGAsXG4gICAgICAgIC4uLmNvbmZpZy5kZWZhdWx0T3B0aW9ucz8uY29ubmVjdGlvbixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyDqsJzrsJwg7ZmY6rK9IOyEpOyglVxuICAgIGNvbnN0IGRldk1hc3Rlck9wdGlvbnMgPSBjb25maWcuZW52aXJvbm1lbnRzPy5kZXZlbG9wbWVudDtcbiAgICBjb25zdCBkZXZTbGF2ZU9wdGlvbnMgPSBjb25maWcuZW52aXJvbm1lbnRzPy5kZXZlbG9wbWVudF9zbGF2ZTtcbiAgICBjb25zdCBkZXZlbG9wbWVudF9tYXN0ZXIgPSBhc3NpZ24oZGVmYXVsdEtuZXhDb25maWcsIGRldk1hc3Rlck9wdGlvbnMgPz8ge30pO1xuICAgIGNvbnN0IGRldmVsb3BtZW50X3NsYXZlID0gYXNzaWduKFxuICAgICAgYXNzaWduKGRlZmF1bHRLbmV4Q29uZmlnLCBkZXZNYXN0ZXJPcHRpb25zID8/IHt9KSxcbiAgICAgIGRldlNsYXZlT3B0aW9ucyA/PyB7fSxcbiAgICApO1xuICAgIC8vIE5PVEU6IGZpeHR1cmUgcmVtb3Rl64qUIGRlZmF1bHQgY29ubmVjdGlvbuydmCBEQuulvCBvdmVycmlkZe2VtOyEoCDslYjrkKguXG4gICAgY29uc3QgZml4dHVyZV9yZW1vdGUgPSBhc3NpZ24oXG4gICAgICBhc3NpZ24oYXNzaWduKGRlZmF1bHRLbmV4Q29uZmlnLCBkZXZNYXN0ZXJPcHRpb25zID8/IHt9KSwge1xuICAgICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgICAgZGF0YWJhc2U6IGAke2NvbmZpZy5uYW1lfV9maXh0dXJlX3JlbW90ZWAsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIGNvbmZpZy5lbnZpcm9ubWVudHM/LnJlbW90ZV9maXh0dXJlID8/IHt9LFxuICAgICk7XG5cbiAgICAvLyDtlITroZzrjZXshZgg7ZmY6rK9IOyEpOyglVxuICAgIGNvbnN0IHByb2RNYXN0ZXJPcHRpb25zID0gY29uZmlnLmVudmlyb25tZW50cz8ucHJvZHVjdGlvbiA/PyB7fTtcbiAgICBjb25zdCBwcm9kU2xhdmVPcHRpb25zID0gY29uZmlnLmVudmlyb25tZW50cz8ucHJvZHVjdGlvbl9zbGF2ZSA/PyB7fTtcbiAgICBjb25zdCBwcm9kdWN0aW9uX21hc3RlciA9IGFzc2lnbihkZWZhdWx0S25leENvbmZpZywgcHJvZE1hc3Rlck9wdGlvbnMpO1xuICAgIGNvbnN0IHByb2R1Y3Rpb25fc2xhdmUgPSBhc3NpZ24oXG4gICAgICBhc3NpZ24oZGVmYXVsdEtuZXhDb25maWcsIHByb2RNYXN0ZXJPcHRpb25zKSxcbiAgICAgIHByb2RTbGF2ZU9wdGlvbnMgPz8ge30sXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0ZXN0LFxuICAgICAgZml4dHVyZV9yZW1vdGUsXG4gICAgICBkZXZlbG9wbWVudF9tYXN0ZXIsXG4gICAgICBkZXZlbG9wbWVudF9zbGF2ZSxcbiAgICAgIHByb2R1Y3Rpb25fbWFzdGVyLFxuICAgICAgcHJvZHVjdGlvbl9zbGF2ZSxcbiAgICB9O1xuICB9XG5cbiAgLy8gVGVzdCDtmZjqsr3sl5DshJwg7Yq4656c7J6t7IWYIOyCrOyaqVxuICBwdWJsaWMgdGVzdFRyYW5zYWN0aW9uOiBLbmV4LlRyYW5zYWN0aW9uIHwgbnVsbCA9IG51bGw7XG4gIGFzeW5jIGNyZWF0ZVRlc3RUcmFuc2FjdGlvbigpOiBQcm9taXNlPEtuZXguVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBkYiA9IHRoaXMuZ2V0REIoXCJ3XCIpO1xuICAgIHRoaXMudGVzdFRyYW5zYWN0aW9uID0gYXdhaXQgZGIudHJhbnNhY3Rpb24oKTtcbiAgICByZXR1cm4gdGhpcy50ZXN0VHJhbnNhY3Rpb247XG4gIH1cbiAgYXN5bmMgY2xlYXJUZXN0VHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy50ZXN0VHJhbnNhY3Rpb24/LnJvbGxiYWNrKCk7XG4gICAgdGhpcy50ZXN0VHJhbnNhY3Rpb24gPSBudWxsO1xuICB9XG4gIGFzeW5jIGdldFRlc3RDb25uZWN0aW9uKCk6IFByb21pc2U8S25leD4ge1xuICAgIGNvbnN0IGRiID0gdGhpcy5nZXREQihcIndcIik7XG4gICAgcmV0dXJuIGRiO1xuICB9XG59XG5leHBvcnQgY29uc3QgREIgPSBuZXcgREJDbGFzcygpO1xuIl0sIm5hbWVzIjpbIkFzeW5jTG9jYWxTdG9yYWdlIiwia25leCIsImFzc2lnbiIsIlNvbmFtdSIsIlRyYW5zYWN0aW9uQ29udGV4dCIsIkRCQ2xhc3MiLCJ3ZGIiLCJyZGIiLCJ0cmFuc2FjdGlvblN0b3JhZ2UiLCJydW5XaXRoVHJhbnNhY3Rpb24iLCJjYWxsYmFjayIsInJ1biIsImdldFRyYW5zYWN0aW9uQ29udGV4dCIsImdldFN0b3JlIiwiZ2V0REIiLCJ3aGljaCIsImRiQ29uZmlnIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwidGVzdFRyYW5zYWN0aW9uIiwidGVzdCIsInBvb2wiLCJtaW4iLCJtYXgiLCJpbnN0YW5jZU5hbWUiLCJjb25maWciLCJnZXREQkNvbmZpZyIsImRldmVsb3BtZW50X21hc3RlciIsImRldmVsb3BtZW50X3NsYXZlIiwicHJvZHVjdGlvbl9tYXN0ZXIiLCJwcm9kdWN0aW9uX3NsYXZlIiwiRXJyb3IiLCJkZXN0cm95IiwidW5kZWZpbmVkIiwiZ2VuZXJhdGVEQkNvbmZpZyIsImRlZmF1bHRLbmV4Q29uZmlnIiwiY2xpZW50IiwibWlncmF0aW9ucyIsImRpcmVjdG9yeSIsImNvbm5lY3Rpb24iLCJkYXRhYmFzZSIsIm5hbWUiLCJkZWZhdWx0T3B0aW9ucyIsImRldk1hc3Rlck9wdGlvbnMiLCJlbnZpcm9ubWVudHMiLCJkZXZlbG9wbWVudCIsImRldlNsYXZlT3B0aW9ucyIsImZpeHR1cmVfcmVtb3RlIiwicmVtb3RlX2ZpeHR1cmUiLCJwcm9kTWFzdGVyT3B0aW9ucyIsInByb2R1Y3Rpb24iLCJwcm9kU2xhdmVPcHRpb25zIiwiY3JlYXRlVGVzdFRyYW5zYWN0aW9uIiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNsZWFyVGVzdFRyYW5zYWN0aW9uIiwicm9sbGJh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
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9kYi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY0xvY2FsU3RvcmFnZSB9IGZyb20gXCJhc3luY19ob29rc1wiO1xuaW1wb3J0IGtuZXgsIHsgdHlwZSBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gXCJyYWRhc2hpXCI7XG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGlcIjtcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb25maWcsIFNvbmFtdUNvbmZpZyB9IGZyb20gXCIuLi9hcGkvY29uZmlnXCI7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkNvbnRleHQgfSBmcm9tIFwiLi90cmFuc2FjdGlvbi1jb250ZXh0XCI7XG5cbi8qKlxuICog7Jes65+sIOyEpOyglSDqsJ3ssrTrpbwg7Iic7LCo7KCB7Jy866GcIGRlZXAgbWVyZ2Xtlanri4jri6QuXG4gKiB1bmRlZmluZWQvbnVsbOyduCDsnbjsnpDripQg66y07Iuc65Cp64uI64ukLlxuICovXG5mdW5jdGlvbiBtZXJnZUNvbmZpZ3M8VCBleHRlbmRzIG9iamVjdD4oLi4uY29uZmlnczogKFBhcnRpYWw8VD4gfCB1bmRlZmluZWQgfCBudWxsKVtdKTogVCB7XG4gIHJldHVybiBjb25maWdzLnJlZHVjZTxUPigoYWNjLCBjb25maWcpID0+IChjb25maWcgPyBhc3NpZ24oYWNjLCBjb25maWcgYXMgVCkgOiBhY2MpLCB7fSBhcyBUKTtcbn1cblxuZXhwb3J0IHR5cGUgREJQcmVzZXQgPSBcIndcIiB8IFwiclwiO1xuXG5leHBvcnQgdHlwZSBTb25hbXVEQkNvbmZpZyA9IHtcbiAgZGV2ZWxvcG1lbnRfbWFzdGVyOiBLbmV4LkNvbmZpZztcbiAgZGV2ZWxvcG1lbnRfc2xhdmU6IEtuZXguQ29uZmlnO1xuICBwcm9kdWN0aW9uX21hc3RlcjogS25leC5Db25maWc7XG4gIHByb2R1Y3Rpb25fc2xhdmU6IEtuZXguQ29uZmlnO1xuICBmaXh0dXJlOiBLbmV4LkNvbmZpZztcbiAgdGVzdDogS25leC5Db25maWc7XG59O1xuXG5leHBvcnQgY2xhc3MgREJDbGFzcyB7XG4gIHByaXZhdGUgd2RiPzogS25leDtcbiAgcHJpdmF0ZSByZGI/OiBLbmV4O1xuXG4gIHB1YmxpYyB0cmFuc2FjdGlvblN0b3JhZ2UgPSBuZXcgQXN5bmNMb2NhbFN0b3JhZ2U8VHJhbnNhY3Rpb25Db250ZXh0PigpO1xuXG4gIHB1YmxpYyBydW5XaXRoVHJhbnNhY3Rpb248VD4oY2FsbGJhY2s6ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblN0b3JhZ2UucnVuKG5ldyBUcmFuc2FjdGlvbkNvbnRleHQoKSwgY2FsbGJhY2spO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zYWN0aW9uQ29udGV4dCgpOiBUcmFuc2FjdGlvbkNvbnRleHQge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uU3RvcmFnZS5nZXRTdG9yZSgpID8/IG5ldyBUcmFuc2FjdGlvbkNvbnRleHQoKTtcbiAgfVxuXG4gIGdldERCKHdoaWNoOiBEQlByZXNldCk6IEtuZXgge1xuICAgIGNvbnN0IGRiQ29uZmlnID0gU29uYW11LmRiQ29uZmlnO1xuXG4gICAgLy8g7YWM7Iqk7Yq4IO2KuOuenOyereyFmCDqsqnrpqxcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiKSB7XG4gICAgICBpZiAodGhpcy50ZXN0VHJhbnNhY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVzdFRyYW5zYWN0aW9uO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLndkYikge1xuICAgICAgICByZXR1cm4gdGhpcy53ZGI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndkYiA9IGtuZXgoe1xuICAgICAgICAgIC4uLmRiQ29uZmlnLnRlc3QsXG4gICAgICAgICAgLy8g64uo7J28IO2SgFxuICAgICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMSxcbiAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMud2RiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlTmFtZSA9IHdoaWNoID09PSBcIndcIiA/IFwid2RiXCIgOiBcInJkYlwiO1xuXG4gICAgaWYgKCF0aGlzW2luc3RhbmNlTmFtZV0pIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0REJDb25maWcod2hpY2gpO1xuICAgICAgdGhpc1tpbnN0YW5jZU5hbWVdID0ga25leChjb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzW2luc3RhbmNlTmFtZV07XG4gIH1cblxuICBnZXREQkNvbmZpZyh3aGljaDogREJQcmVzZXQpOiBLbmV4LkNvbmZpZyB7XG4gICAgY29uc3QgZGJDb25maWcgPSBTb25hbXUuZGJDb25maWc7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInRlc3RcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGJDb25maWcudGVzdCxcbiAgICAgICAgLy8g64uo7J28IO2SgFxuICAgICAgICBwb29sOiB7XG4gICAgICAgICAgbWluOiAxLFxuICAgICAgICAgIG1heDogMSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIHN3aXRjaCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPz8gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICBjYXNlIFwiZGV2ZWxvcG1lbnRcIjpcbiAgICAgIGNhc2UgXCJzdGFnaW5nXCI6XG4gICAgICAgIHJldHVybiB3aGljaCA9PT0gXCJ3XCJcbiAgICAgICAgICA/IGRiQ29uZmlnLmRldmVsb3BtZW50X21hc3RlclxuICAgICAgICAgIDogKGRiQ29uZmlnLmRldmVsb3BtZW50X3NsYXZlID8/IGRiQ29uZmlnLmRldmVsb3BtZW50X21hc3Rlcik7XG4gICAgICBjYXNlIFwicHJvZHVjdGlvblwiOlxuICAgICAgICByZXR1cm4gd2hpY2ggPT09IFwid1wiXG4gICAgICAgICAgPyBkYkNvbmZpZy5wcm9kdWN0aW9uX21hc3RlclxuICAgICAgICAgIDogKGRiQ29uZmlnLnByb2R1Y3Rpb25fc2xhdmUgPz8gZGJDb25maWcucHJvZHVjdGlvbl9tYXN0ZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDtmITsnqwgRU5WICR7cHJvY2Vzcy5lbnYuTk9ERV9FTlZ97JeQ64qUIOyEpOyglSDqsIDriqXtlZwgRELshKTsoJXsnbQg7JeG7Iq164uI64ukLmApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMud2RiICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMud2RiLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMud2RiID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZGIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5yZGIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5yZGIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlREJDb25maWcoY29uZmlnOiBTb25hbXVDb25maWdbXCJkYXRhYmFzZVwiXSk6IFNvbmFtdURCQ29uZmlnIHtcbiAgICBjb25zdCBkZWZhdWx0S25leENvbmZpZzogUGFydGlhbDxEYXRhYmFzZUNvbmZpZz4gPSBhc3NpZ24oXG4gICAgICB7XG4gICAgICAgIGNsaWVudDogXCJwZ1wiLFxuICAgICAgICBwb29sOiB7XG4gICAgICAgICAgbWluOiAxLFxuICAgICAgICAgIG1heDogNSxcbiAgICAgICAgfSxcbiAgICAgICAgbWlncmF0aW9uczoge1xuICAgICAgICAgIGRpcmVjdG9yeTogXCIuL3NyYy9taWdyYXRpb25zXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICBkYXRhYmFzZTogY29uZmlnLm5hbWUsXG4gICAgICAgICAgLi4uY29uZmlnLmRlZmF1bHRPcHRpb25zPy5jb25uZWN0aW9uLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNvbmZpZy5kZWZhdWx0T3B0aW9ucyxcbiAgICApO1xuXG4gICAgLy8gYmlvbWUtaWdub3JlIGZvcm1hdDog7ISk7KCVIOq1rOyhsCDqsIDrj4XshLHsnYQg7JyE7ZW0IOyXrOufrCDspITroZwg7Jyg7KeAXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIOyXrOq4sOyXkCDrgpjsl7TtlZwg7Iic7ISc64yA66GcIFNvbmFtdSBVSeydmCBEQiBNaWdyYXRpb24g7YOt7JeQIO2RnOyLnOuQqeuLiOuLpC5cbiAgICAgIHRlc3Q6IG1lcmdlQ29uZmlncyhcbiAgICAgICAgZGVmYXVsdEtuZXhDb25maWcsIFxuICAgICAgICB7IGNvbm5lY3Rpb246IHsgZGF0YWJhc2U6IGAke2NvbmZpZy5uYW1lfV90ZXN0YCB9IH0sXG4gICAgICAgIGNvbmZpZy5lbnZpcm9ubWVudHM/LnRlc3RcbiAgICAgICksXG4gICAgICBmaXh0dXJlOiBtZXJnZUNvbmZpZ3MoXG4gICAgICAgIGRlZmF1bHRLbmV4Q29uZmlnLCBcbiAgICAgICAgeyBjb25uZWN0aW9uOiB7IGRhdGFiYXNlOiBgJHtjb25maWcubmFtZX1fZml4dHVyZWAgfSB9LFxuICAgICAgICBjb25maWcuZW52aXJvbm1lbnRzPy5maXh0dXJlLFxuICAgICAgKSxcbiAgICAgIGRldmVsb3BtZW50X21hc3RlcjogbWVyZ2VDb25maWdzKFxuICAgICAgICBkZWZhdWx0S25leENvbmZpZywgXG4gICAgICAgIGNvbmZpZy5lbnZpcm9ubWVudHM/LmRldmVsb3BtZW50XG4gICAgICApLFxuICAgICAgZGV2ZWxvcG1lbnRfc2xhdmU6IG1lcmdlQ29uZmlncyhcbiAgICAgICAgZGVmYXVsdEtuZXhDb25maWcsXG4gICAgICAgIGNvbmZpZy5lbnZpcm9ubWVudHM/LmRldmVsb3BtZW50LFxuICAgICAgICBjb25maWcuZW52aXJvbm1lbnRzPy5kZXZlbG9wbWVudF9zbGF2ZSxcbiAgICAgICksXG4gICAgICBwcm9kdWN0aW9uX21hc3RlcjogbWVyZ2VDb25maWdzKFxuICAgICAgICBkZWZhdWx0S25leENvbmZpZywgXG4gICAgICAgIGNvbmZpZy5lbnZpcm9ubWVudHM/LnByb2R1Y3Rpb25cbiAgICAgICksXG4gICAgICBwcm9kdWN0aW9uX3NsYXZlOiBtZXJnZUNvbmZpZ3MoXG4gICAgICAgIGRlZmF1bHRLbmV4Q29uZmlnLFxuICAgICAgICBjb25maWcuZW52aXJvbm1lbnRzPy5wcm9kdWN0aW9uLFxuICAgICAgICBjb25maWcuZW52aXJvbm1lbnRzPy5wcm9kdWN0aW9uX3NsYXZlLFxuICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgLy8gVGVzdCDtmZjqsr3sl5DshJwg7Yq4656c7J6t7IWYIOyCrOyaqVxuICBwdWJsaWMgdGVzdFRyYW5zYWN0aW9uOiBLbmV4LlRyYW5zYWN0aW9uIHwgbnVsbCA9IG51bGw7XG4gIGFzeW5jIGNyZWF0ZVRlc3RUcmFuc2FjdGlvbigpOiBQcm9taXNlPEtuZXguVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBkYiA9IHRoaXMuZ2V0REIoXCJ3XCIpO1xuICAgIHRoaXMudGVzdFRyYW5zYWN0aW9uID0gYXdhaXQgZGIudHJhbnNhY3Rpb24oKTtcbiAgICByZXR1cm4gdGhpcy50ZXN0VHJhbnNhY3Rpb247XG4gIH1cbiAgYXN5bmMgY2xlYXJUZXN0VHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy50ZXN0VHJhbnNhY3Rpb24/LnJvbGxiYWNrKCk7XG4gICAgdGhpcy50ZXN0VHJhbnNhY3Rpb24gPSBudWxsO1xuICB9XG4gIGFzeW5jIGdldFRlc3RDb25uZWN0aW9uKCk6IFByb21pc2U8S25leD4ge1xuICAgIGNvbnN0IGRiID0gdGhpcy5nZXREQihcIndcIik7XG4gICAgcmV0dXJuIGRiO1xuICB9XG59XG5leHBvcnQgY29uc3QgREIgPSBuZXcgREJDbGFzcygpO1xuIl0sIm5hbWVzIjpbIkFzeW5jTG9jYWxTdG9yYWdlIiwia25leCIsImFzc2lnbiIsIlNvbmFtdSIsIlRyYW5zYWN0aW9uQ29udGV4dCIsIm1lcmdlQ29uZmlncyIsImNvbmZpZ3MiLCJyZWR1Y2UiLCJhY2MiLCJjb25maWciLCJEQkNsYXNzIiwid2RiIiwicmRiIiwidHJhbnNhY3Rpb25TdG9yYWdlIiwicnVuV2l0aFRyYW5zYWN0aW9uIiwiY2FsbGJhY2siLCJydW4iLCJnZXRUcmFuc2FjdGlvbkNvbnRleHQiLCJnZXRTdG9yZSIsImdldERCIiwid2hpY2giLCJkYkNvbmZpZyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInRlc3RUcmFuc2FjdGlvbiIsInRlc3QiLCJwb29sIiwibWluIiwibWF4IiwiaW5zdGFuY2VOYW1lIiwiZ2V0REJDb25maWciLCJkZXZlbG9wbWVudF9tYXN0ZXIiLCJkZXZlbG9wbWVudF9zbGF2ZSIsInByb2R1Y3Rpb25fbWFzdGVyIiwicHJvZHVjdGlvbl9zbGF2ZSIsIkVycm9yIiwiZGVzdHJveSIsInVuZGVmaW5lZCIsImdlbmVyYXRlREJDb25maWciLCJkZWZhdWx0S25leENvbmZpZyIsImNsaWVudCIsIm1pZ3JhdGlvbnMiLCJkaXJlY3RvcnkiLCJjb25uZWN0aW9uIiwiZGF0YWJhc2UiLCJuYW1lIiwiZGVmYXVsdE9wdGlvbnMiLCJlbnZpcm9ubWVudHMiLCJmaXh0dXJlIiwiZGV2ZWxvcG1lbnQiLCJwcm9kdWN0aW9uIiwiY3JlYXRlVGVzdFRyYW5zYWN0aW9uIiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNsZWFyVGVzdFRyYW5zYWN0aW9uIiwicm9sbGJhY2siLCJnZXRUZXN0Q29ubmVjdGlvbiIsIkRCIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxpQkFBaUIsUUFBUSxjQUFjO0FBQ2hELE9BQU9DLFVBQXlCLE9BQU87QUFDdkMsU0FBU0MsTUFBTSxRQUFRLFVBQVU7QUFFakMsU0FBU0Ms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
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,6 @@ export * from "./entity/entity";
|
|
|
15
15
|
export * from "./entity/entity-manager";
|
|
16
16
|
export * from "./exceptions/error-handler";
|
|
17
17
|
export * from "./exceptions/so-exceptions";
|
|
18
|
-
export * from "./file-storage/driver";
|
|
19
18
|
export * from "./migration/migration-set";
|
|
20
19
|
export * from "./migration/migrator";
|
|
21
20
|
export * from "./migration/postgresql-schema-reader";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,mBAAmB,eAAe,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,mBAAmB,eAAe,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sCAAsC,CAAC;AACrD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,6 @@ export * from "./entity/entity.js";
|
|
|
14
14
|
export * from "./entity/entity-manager.js";
|
|
15
15
|
export * from "./exceptions/error-handler.js";
|
|
16
16
|
export * from "./exceptions/so-exceptions.js";
|
|
17
|
-
export * from "./file-storage/driver.js";
|
|
18
17
|
export * from "./migration/migration-set.js";
|
|
19
18
|
export * from "./migration/migrator.js";
|
|
20
19
|
export * from "./migration/postgresql-schema-reader.js";
|
|
@@ -33,4 +32,4 @@ export * from "./utils/type-utils.js";
|
|
|
33
32
|
export * from "./utils/utils.js"; // export * from "./api/code-converters";
|
|
34
33
|
// export * from "./syncer/syncer";
|
|
35
34
|
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hcGkvYmFzZS1mcmFtZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXBpL2NvbmZpZ1wiO1xuZXhwb3J0IHR5cGUgKiBmcm9tIFwiLi9hcGkvY29udGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXBpL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FwaS9zb25hbXVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL2Jhc2UtbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL2Jhc2UtbW9kZWwudHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL2RiXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS9wdXJpXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS9wdXJpLnR5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS9wdXJpLXN1YnNldC50eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS91cHNlcnQtYnVpbGRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZW50aXR5L2VudGl0eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leGNlcHRpb25zL2Vycm9yLWhhbmRsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4Y2VwdGlvbnMvc28tZXhjZXB0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWlncmF0aW9uL21pZ3JhdGlvbi1zZXRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21pZ3JhdGlvbi9taWdyYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWlncmF0aW9uL3Bvc3RncmVzcWwtc2NoZW1hLXJlYWRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWlncmF0aW9uL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9uYWl0ZS9uYWl0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbmFpdGUvbmFpdGUtcmVwb3J0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0cmVhbS9zc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Rhc2tzL2RlY29yYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVtcGxhdGUvdGVtcGxhdGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlbXBsYXRlL3RlbXBsYXRlLW1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Rlc3RpbmcvZml4dHVyZS1tYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMvY29udHJvbGxlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMvbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL3R5cGUtdXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL3V0aWxzXCI7XG5cbi8vIGV4cG9ydCAqIGZyb20gXCIuL2FwaS9jb2RlLWNvbnZlcnRlcnNcIjtcbi8vIGV4cG9ydCAqIGZyb20gXCIuL3N5bmNlci9zeW5jZXJcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFtQjtBQUNqQyxjQUFjLGtCQUFlO0FBRTdCLGNBQWMsc0JBQW1CO0FBQ2pDLGNBQWMsa0JBQWU7QUFDN0IsY0FBYywyQkFBd0I7QUFDdEMsY0FBYyxpQ0FBOEI7QUFDNUMsY0FBYyxtQkFBZ0I7QUFDOUIsY0FBYyxxQkFBa0I7QUFDaEMsY0FBYywyQkFBd0I7QUFDdEMsY0FBYyxrQ0FBK0I7QUFDN0MsY0FBYyw2QkFBMEI7QUFDeEMsY0FBYywrQkFBNEI7QUFDMUMsY0FBYyxxQkFBa0I7QUFDaEMsY0FBYyw2QkFBMEI7QUFDeEMsY0FBYyxnQ0FBNkI7QUFDM0MsY0FBYyxnQ0FBNkI7QUFDM0MsY0FBYywrQkFBNEI7QUFDMUMsY0FBYywwQkFBdUI7QUFDckMsY0FBYywwQ0FBdUM7QUFDckQsY0FBYyx1QkFBb0I7QUFDbEMsY0FBYyxtQkFBZ0I7QUFDOUIsY0FBYyw0QkFBeUI7QUFDdkMsY0FBYyxrQkFBZTtBQUM3QixjQUFjLHVCQUFvQjtBQUNsQyxjQUFjLHlCQUFzQjtBQUNwQyxjQUFjLGlDQUE4QjtBQUM1QyxjQUFjLCtCQUE0QjtBQUMxQyxjQUFjLG1CQUFnQjtBQUM5QixjQUFjLHdCQUFxQjtBQUNuQyxjQUFjLG1CQUFnQjtBQUM5QixjQUFjLHdCQUFxQjtBQUNuQyxjQUFjLG1CQUFnQixDQUU5Qix5Q0FBeUM7Q0FDekMsbUNBQW1DIn0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FSDriver } from "flydrive/drivers/fs";
|
|
2
|
+
import type { FSDriverOptions } from "flydrive/drivers/fs/types";
|
|
3
|
+
import { S3Driver } from "flydrive/drivers/s3";
|
|
4
|
+
import type { S3DriverOptions } from "flydrive/drivers/s3/types";
|
|
5
|
+
/**
|
|
6
|
+
* 드라이버 팩토리 함수
|
|
7
|
+
* 설정 → 드라이버 인스턴스 생성 함수 변환
|
|
8
|
+
*/
|
|
9
|
+
export declare const drivers: {
|
|
10
|
+
fs: (config: FSDriverOptions) => () => FSDriver;
|
|
11
|
+
s3: (config: S3DriverOptions) => () => S3Driver;
|
|
12
|
+
};
|
|
13
|
+
export type DriverKey = keyof typeof drivers;
|
|
14
|
+
//# sourceMappingURL=drivers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drivers.d.ts","sourceRoot":"","sources":["../../src/storage/drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,OAAO;iBACL,eAAe;iBACf,eAAe;CAC7B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,OAAO,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FSDriver } from "flydrive/drivers/fs";
|
|
2
|
+
import { S3Driver } from "flydrive/drivers/s3";
|
|
3
|
+
/**
|
|
4
|
+
* 드라이버 팩토리 함수
|
|
5
|
+
* 설정 → 드라이버 인스턴스 생성 함수 변환
|
|
6
|
+
*/ export const drivers = {
|
|
7
|
+
fs: (config)=>()=>new FSDriver(config),
|
|
8
|
+
s3: (config)=>()=>new S3Driver(config)
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL2RyaXZlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRlNEcml2ZXIgfSBmcm9tIFwiZmx5ZHJpdmUvZHJpdmVycy9mc1wiO1xuaW1wb3J0IHR5cGUgeyBGU0RyaXZlck9wdGlvbnMgfSBmcm9tIFwiZmx5ZHJpdmUvZHJpdmVycy9mcy90eXBlc1wiO1xuaW1wb3J0IHsgUzNEcml2ZXIgfSBmcm9tIFwiZmx5ZHJpdmUvZHJpdmVycy9zM1wiO1xuaW1wb3J0IHR5cGUgeyBTM0RyaXZlck9wdGlvbnMgfSBmcm9tIFwiZmx5ZHJpdmUvZHJpdmVycy9zMy90eXBlc1wiO1xuXG4vKipcbiAqIOuTnOudvOydtOuyhCDtjKnthqDrpqwg7ZWo7IiYXG4gKiDshKTsoJUg4oaSIOuTnOudvOydtOuyhCDsnbjsiqTthLTsiqQg7IOd7ISxIO2VqOyImCDrs4DtmZhcbiAqL1xuZXhwb3J0IGNvbnN0IGRyaXZlcnMgPSB7XG4gIGZzOiAoY29uZmlnOiBGU0RyaXZlck9wdGlvbnMpID0+ICgpID0+IG5ldyBGU0RyaXZlcihjb25maWcpLFxuICBzMzogKGNvbmZpZzogUzNEcml2ZXJPcHRpb25zKSA9PiAoKSA9PiBuZXcgUzNEcml2ZXIoY29uZmlnKSxcbn07XG5cbmV4cG9ydCB0eXBlIERyaXZlcktleSA9IGtleW9mIHR5cGVvZiBkcml2ZXJzO1xuIl0sIm5hbWVzIjpbIkZTRHJpdmVyIiwiUzNEcml2ZXIiLCJkcml2ZXJzIiwiZnMiLCJjb25maWciLCJzMyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsUUFBUSxRQUFRLHNCQUFzQjtBQUUvQyxTQUFTQyxRQUFRLFFBQVEsc0JBQXNCO0FBRy9DOzs7Q0FHQyxHQUNELE9BQU8sTUFBTUMsVUFBVTtJQUNyQkMsSUFBSSxDQUFDQyxTQUE0QixJQUFNLElBQUlKLFNBQVNJO0lBQ3BEQyxJQUFJLENBQUNELFNBQTRCLElBQU0sSUFBSUgsU0FBU0c7QUFDdEQsRUFBRSJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Storage 서브모듈 exports
|
|
2
|
+
export { drivers } from "./drivers.js";
|
|
3
|
+
export { StorageManager } from "./storage-manager.js";
|
|
4
|
+
export { UploadedFile } from "./uploaded-file.js";
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFN0b3JhZ2Ug7ISc67iM66qo65OIIGV4cG9ydHNcbmV4cG9ydCB7IHR5cGUgRHJpdmVyS2V5LCBkcml2ZXJzIH0gZnJvbSBcIi4vZHJpdmVyc1wiO1xuZXhwb3J0IHsgU3RvcmFnZU1hbmFnZXIgfSBmcm9tIFwiLi9zdG9yYWdlLW1hbmFnZXJcIjtcbmV4cG9ydCB0eXBlIHsgU3RvcmFnZUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgeyBVcGxvYWRlZEZpbGUgfSBmcm9tIFwiLi91cGxvYWRlZC1maWxlXCI7XG4iXSwibmFtZXMiOlsiZHJpdmVycyIsIlN0b3JhZ2VNYW5hZ2VyIiwiVXBsb2FkZWRGaWxlIl0sIm1hcHBpbmdzIjoiQUFBQSx1QkFBdUI7QUFDdkIsU0FBeUJBLE9BQU8sUUFBUSxlQUFZO0FBQ3BELFNBQVNDLGNBQWMsUUFBUSx1QkFBb0I7QUFFbkQsU0FBU0MsWUFBWSxRQUFRLHFCQUFrQiJ9
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Disk } from "flydrive";
|
|
2
|
+
import type { DriverKey } from "./drivers";
|
|
3
|
+
import type { StorageConfig } from "./types";
|
|
4
|
+
/**
|
|
5
|
+
* 여러 디스크를 관리하는 매니저
|
|
6
|
+
*/
|
|
7
|
+
export declare class StorageManager {
|
|
8
|
+
private config;
|
|
9
|
+
private disks;
|
|
10
|
+
constructor(config: StorageConfig);
|
|
11
|
+
/**
|
|
12
|
+
* 디스크 인스턴스 반환 (lazy initialization)
|
|
13
|
+
* @param diskName 디스크 이름 (없으면 default)
|
|
14
|
+
*/
|
|
15
|
+
use(diskName?: DriverKey): Disk;
|
|
16
|
+
/**
|
|
17
|
+
* 기본 디스크 이름 반환
|
|
18
|
+
*/
|
|
19
|
+
get defaultDisk(): string;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=storage-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../src/storage/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;GAEG;AACH,qBAAa,cAAc;IAGb,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,KAAK,CAAmC;gBAE5B,MAAM,EAAE,aAAa;IAEzC;;;OAGG;IACH,GAAG,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,IAAI;IAe/B;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;CACF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Disk } from "flydrive";
|
|
2
|
+
import { assertDefined } from "../utils/utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* 여러 디스크를 관리하는 매니저
|
|
5
|
+
*/ export class StorageManager {
|
|
6
|
+
config;
|
|
7
|
+
disks = new Map();
|
|
8
|
+
constructor(config){
|
|
9
|
+
this.config = config;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 디스크 인스턴스 반환 (lazy initialization)
|
|
13
|
+
* @param diskName 디스크 이름 (없으면 default)
|
|
14
|
+
*/ use(diskName) {
|
|
15
|
+
const name = diskName ?? this.config.default;
|
|
16
|
+
if (!this.disks.has(name)) {
|
|
17
|
+
const factory = this.config.drivers[name];
|
|
18
|
+
if (!factory) {
|
|
19
|
+
const available = Object.keys(this.config.drivers).join(", ");
|
|
20
|
+
throw new Error(`Unknown disk: "${name}". Available: ${available}`);
|
|
21
|
+
}
|
|
22
|
+
this.disks.set(name, new Disk(factory()));
|
|
23
|
+
}
|
|
24
|
+
return assertDefined(this.disks.get(name), `Disk ${name} not found`);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 기본 디스크 이름 반환
|
|
28
|
+
*/ get defaultDisk() {
|
|
29
|
+
return this.config.default;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL3N0b3JhZ2UtbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXNrIH0gZnJvbSBcImZseWRyaXZlXCI7XG5pbXBvcnQgeyBhc3NlcnREZWZpbmVkIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IERyaXZlcktleSB9IGZyb20gXCIuL2RyaXZlcnNcIjtcbmltcG9ydCB0eXBlIHsgU3RvcmFnZUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICog7Jes65+sIOuUlOyKpO2BrOulvCDqtIDrpqztlZjripQg66ek64uI7KCAXG4gKi9cbmV4cG9ydCBjbGFzcyBTdG9yYWdlTWFuYWdlciB7XG4gIHByaXZhdGUgZGlza3M6IE1hcDxEcml2ZXJLZXksIERpc2s+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBTdG9yYWdlQ29uZmlnKSB7fVxuXG4gIC8qKlxuICAgKiDrlJTsiqTtgawg7J247Iqk7YS07IqkIOuwmO2ZmCAobGF6eSBpbml0aWFsaXphdGlvbilcbiAgICogQHBhcmFtIGRpc2tOYW1lIOuUlOyKpO2BrCDsnbTrpoQgKOyXhuycvOuptCBkZWZhdWx0KVxuICAgKi9cbiAgdXNlKGRpc2tOYW1lPzogRHJpdmVyS2V5KTogRGlzayB7XG4gICAgY29uc3QgbmFtZSA9IGRpc2tOYW1lID8/ICh0aGlzLmNvbmZpZy5kZWZhdWx0IGFzIERyaXZlcktleSk7XG5cbiAgICBpZiAoIXRoaXMuZGlza3MuaGFzKG5hbWUpKSB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5jb25maWcuZHJpdmVyc1tuYW1lXTtcbiAgICAgIGlmICghZmFjdG9yeSkge1xuICAgICAgICBjb25zdCBhdmFpbGFibGUgPSBPYmplY3Qua2V5cyh0aGlzLmNvbmZpZy5kcml2ZXJzKS5qb2luKFwiLCBcIik7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBkaXNrOiBcIiR7bmFtZX1cIi4gQXZhaWxhYmxlOiAke2F2YWlsYWJsZX1gKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlza3Muc2V0KG5hbWUsIG5ldyBEaXNrKGZhY3RvcnkoKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBhc3NlcnREZWZpbmVkKHRoaXMuZGlza3MuZ2V0KG5hbWUpLCBgRGlzayAke25hbWV9IG5vdCBmb3VuZGApO1xuICB9XG5cbiAgLyoqXG4gICAqIOq4sOuzuCDrlJTsiqTtgawg7J2066aEIOuwmO2ZmFxuICAgKi9cbiAgZ2V0IGRlZmF1bHREaXNrKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmRlZmF1bHQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJEaXNrIiwiYXNzZXJ0RGVmaW5lZCIsIlN0b3JhZ2VNYW5hZ2VyIiwiZGlza3MiLCJNYXAiLCJjb25maWciLCJ1c2UiLCJkaXNrTmFtZSIsIm5hbWUiLCJkZWZhdWx0IiwiaGFzIiwiZmFjdG9yeSIsImRyaXZlcnMiLCJhdmFpbGFibGUiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsIkVycm9yIiwic2V0IiwiZ2V0IiwiZGVmYXVsdERpc2siXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLElBQUksUUFBUSxXQUFXO0FBQ2hDLFNBQVNDLGFBQWEsUUFBUSxvQkFBaUI7QUFJL0M7O0NBRUMsR0FDRCxPQUFPLE1BQU1DOztJQUNIQyxRQUE4QixJQUFJQyxNQUFNO0lBRWhELFlBQVksQUFBUUMsTUFBcUIsQ0FBRTthQUF2QkEsU0FBQUE7SUFBd0I7SUFFNUM7OztHQUdDLEdBQ0RDLElBQUlDLFFBQW9CLEVBQVE7UUFDOUIsTUFBTUMsT0FBT0QsWUFBYSxJQUFJLENBQUNGLE1BQU0sQ0FBQ0ksT0FBTztRQUU3QyxJQUFJLENBQUMsSUFBSSxDQUFDTixLQUFLLENBQUNPLEdBQUcsQ0FBQ0YsT0FBTztZQUN6QixNQUFNRyxVQUFVLElBQUksQ0FBQ04sTUFBTSxDQUFDTyxPQUFPLENBQUNKLEtBQUs7WUFDekMsSUFBSSxDQUFDRyxTQUFTO2dCQUNaLE1BQU1FLFlBQVlDLE9BQU9DLElBQUksQ0FBQyxJQUFJLENBQUNWLE1BQU0sQ0FBQ08sT0FBTyxFQUFFSSxJQUFJLENBQUM7Z0JBQ3hELE1BQU0sSUFBSUMsTUFBTSxDQUFDLGVBQWUsRUFBRVQsS0FBSyxjQUFjLEVBQUVLLFdBQVc7WUFDcEU7WUFDQSxJQUFJLENBQUNWLEtBQUssQ0FBQ2UsR0FBRyxDQUFDVixNQUFNLElBQUlSLEtBQUtXO1FBQ2hDO1FBRUEsT0FBT1YsY0FBYyxJQUFJLENBQUNFLEtBQUssQ0FBQ2dCLEdBQUcsQ0FBQ1gsT0FBTyxDQUFDLEtBQUssRUFBRUEsS0FBSyxVQUFVLENBQUM7SUFDckU7SUFFQTs7R0FFQyxHQUNELElBQUlZLGNBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDZixNQUFNLENBQUNJLE9BQU87SUFDNUI7QUFDRiJ9
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DriverContract } from "flydrive/types";
|
|
2
|
+
import type { DriverKey } from "./drivers";
|
|
3
|
+
/**
|
|
4
|
+
* Storage 설정 타입
|
|
5
|
+
*/
|
|
6
|
+
export type StorageConfig = {
|
|
7
|
+
/** 기본 디스크 이름 */
|
|
8
|
+
default: string;
|
|
9
|
+
/** 디스크별 드라이버 팩토리 */
|
|
10
|
+
drivers: Record<DriverKey, () => DriverContract>;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,gBAAgB;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,cAAc,CAAC,CAAC;CAClD,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage 설정 타입
|
|
3
|
+
*/ export { };
|
|
4
|
+
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRHJpdmVyQ29udHJhY3QgfSBmcm9tIFwiZmx5ZHJpdmUvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRHJpdmVyS2V5IH0gZnJvbSBcIi4vZHJpdmVyc1wiO1xuXG4vKipcbiAqIFN0b3JhZ2Ug7ISk7KCVIO2DgOyehVxuICovXG5leHBvcnQgdHlwZSBTdG9yYWdlQ29uZmlnID0ge1xuICAvKiog6riw67O4IOuUlOyKpO2BrCDsnbTrpoQgKi9cbiAgZGVmYXVsdDogc3RyaW5nO1xuICAvKiog65SU7Iqk7YGs67OEIOuTnOudvOydtOuyhCDtjKnthqDrpqwgKi9cbiAgZHJpdmVyczogUmVjb3JkPERyaXZlcktleSwgKCkgPT4gRHJpdmVyQ29udHJhY3Q+O1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7Q0FFQyxHQUNELFdBS0UifQ==
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { MultipartFile } from "@fastify/multipart";
|
|
2
|
+
import type { DriverKey } from "./drivers";
|
|
3
|
+
/**
|
|
4
|
+
* 업로드된 파일 래퍼
|
|
5
|
+
*/
|
|
6
|
+
export declare class UploadedFile {
|
|
7
|
+
private _file;
|
|
8
|
+
private _buffer?;
|
|
9
|
+
private _url?;
|
|
10
|
+
constructor(file: MultipartFile);
|
|
11
|
+
/** 원본 파일명 */
|
|
12
|
+
get filename(): string;
|
|
13
|
+
/** MIME 타입 */
|
|
14
|
+
get mimetype(): string;
|
|
15
|
+
/** 파일 크기 (bytes) */
|
|
16
|
+
get size(): number;
|
|
17
|
+
/** 확장자 (점 제외) */
|
|
18
|
+
get extname(): string | false;
|
|
19
|
+
/** saveToDisk 후 저장된 URL */
|
|
20
|
+
get url(): string | undefined;
|
|
21
|
+
/** Buffer로 변환 (캐싱됨) */
|
|
22
|
+
toBuffer(): Promise<Buffer>;
|
|
23
|
+
/** MD5 해시 계산 */
|
|
24
|
+
md5(): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* 파일을 디스크에 저장
|
|
27
|
+
* @param key 저장 경로 (예: 'uploads/avatar.png')
|
|
28
|
+
* @param diskName 디스크 이름 (기본: default disk)
|
|
29
|
+
* @returns 저장된 파일의 URL
|
|
30
|
+
*/
|
|
31
|
+
saveToDisk(key: string, diskName?: DriverKey): Promise<string>;
|
|
32
|
+
/** 원본 MultipartFile 접근 */
|
|
33
|
+
get raw(): MultipartFile;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=uploaded-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploaded-file.d.ts","sourceRoot":"","sources":["../../src/storage/uploaded-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,IAAI,CAAC,CAAS;gBAEV,IAAI,EAAE,aAAa;IAI/B,aAAa;IACb,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,cAAc;IACd,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,oBAAoB;IACpB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,iBAAiB;IACjB,IAAI,OAAO,IAAI,MAAM,GAAG,KAAK,CAE5B;IAED,2BAA2B;IAC3B,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAE5B;IAED,uBAAuB;IACjB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAOjC,gBAAgB;IACV,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAK5B;;;;;OAKG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAcpE,0BAA0B;IAC1B,IAAI,GAAG,IAAI,aAAa,CAEvB;CACF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { createHash } from "crypto";
|
|
2
|
+
import mime from "mime-types";
|
|
3
|
+
/**
|
|
4
|
+
* 업로드된 파일 래퍼
|
|
5
|
+
*/ export class UploadedFile {
|
|
6
|
+
_file;
|
|
7
|
+
_buffer;
|
|
8
|
+
_url;
|
|
9
|
+
constructor(file){
|
|
10
|
+
this._file = file;
|
|
11
|
+
}
|
|
12
|
+
/** 원본 파일명 */ get filename() {
|
|
13
|
+
return this._file.filename;
|
|
14
|
+
}
|
|
15
|
+
/** MIME 타입 */ get mimetype() {
|
|
16
|
+
return this._file.mimetype;
|
|
17
|
+
}
|
|
18
|
+
/** 파일 크기 (bytes) */ get size() {
|
|
19
|
+
return this._file.file.bytesRead;
|
|
20
|
+
}
|
|
21
|
+
/** 확장자 (점 제외) */ get extname() {
|
|
22
|
+
return mime.extension(this._file.mimetype);
|
|
23
|
+
}
|
|
24
|
+
/** saveToDisk 후 저장된 URL */ get url() {
|
|
25
|
+
return this._url;
|
|
26
|
+
}
|
|
27
|
+
/** Buffer로 변환 (캐싱됨) */ async toBuffer() {
|
|
28
|
+
if (!this._buffer) {
|
|
29
|
+
this._buffer = await this._file.toBuffer();
|
|
30
|
+
}
|
|
31
|
+
return this._buffer;
|
|
32
|
+
}
|
|
33
|
+
/** MD5 해시 계산 */ async md5() {
|
|
34
|
+
const buffer = await this.toBuffer();
|
|
35
|
+
return createHash("md5").update(buffer).digest("hex");
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 파일을 디스크에 저장
|
|
39
|
+
* @param key 저장 경로 (예: 'uploads/avatar.png')
|
|
40
|
+
* @param diskName 디스크 이름 (기본: default disk)
|
|
41
|
+
* @returns 저장된 파일의 URL
|
|
42
|
+
*/ async saveToDisk(key, diskName) {
|
|
43
|
+
// 순환 의존성 방지를 위해 동적 import
|
|
44
|
+
const { Sonamu } = await import("../api/sonamu.js");
|
|
45
|
+
const disk = Sonamu.storage.use(diskName);
|
|
46
|
+
const buffer = await this.toBuffer();
|
|
47
|
+
await disk.put(key, new Uint8Array(buffer), {
|
|
48
|
+
contentType: this.mimetype
|
|
49
|
+
});
|
|
50
|
+
this._url = await disk.getSignedUrl(key);
|
|
51
|
+
return this._url;
|
|
52
|
+
}
|
|
53
|
+
/** 원본 MultipartFile 접근 */ get raw() {
|
|
54
|
+
return this._file;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL3VwbG9hZGVkLWZpbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNdWx0aXBhcnRGaWxlIH0gZnJvbSBcIkBmYXN0aWZ5L211bHRpcGFydFwiO1xuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCBtaW1lIGZyb20gXCJtaW1lLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERyaXZlcktleSB9IGZyb20gXCIuL2RyaXZlcnNcIjtcblxuLyoqXG4gKiDsl4XroZzrk5zrkJwg7YyM7J28IOuemO2NvFxuICovXG5leHBvcnQgY2xhc3MgVXBsb2FkZWRGaWxlIHtcbiAgcHJpdmF0ZSBfZmlsZTogTXVsdGlwYXJ0RmlsZTtcbiAgcHJpdmF0ZSBfYnVmZmVyPzogQnVmZmVyO1xuICBwcml2YXRlIF91cmw/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZmlsZTogTXVsdGlwYXJ0RmlsZSkge1xuICAgIHRoaXMuX2ZpbGUgPSBmaWxlO1xuICB9XG5cbiAgLyoqIOybkOuzuCDtjIzsnbzrqoUgKi9cbiAgZ2V0IGZpbGVuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGUuZmlsZW5hbWU7XG4gIH1cblxuICAvKiogTUlNRSDtg4DsnoUgKi9cbiAgZ2V0IG1pbWV0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGUubWltZXR5cGU7XG4gIH1cblxuICAvKiog7YyM7J28IO2BrOq4sCAoYnl0ZXMpICovXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGUuZmlsZS5ieXRlc1JlYWQ7XG4gIH1cblxuICAvKiog7ZmV7J6l7J6QICjsoJAg7KCc7Jm4KSAqL1xuICBnZXQgZXh0bmFtZSgpOiBzdHJpbmcgfCBmYWxzZSB7XG4gICAgcmV0dXJuIG1pbWUuZXh0ZW5zaW9uKHRoaXMuX2ZpbGUubWltZXR5cGUpO1xuICB9XG5cbiAgLyoqIHNhdmVUb0Rpc2sg7ZuEIOyggOyepeuQnCBVUkwgKi9cbiAgZ2V0IHVybCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICAvKiogQnVmZmVy66GcIOuzgO2ZmCAo7LqQ7Iux65CoKSAqL1xuICBhc3luYyB0b0J1ZmZlcigpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGlmICghdGhpcy5fYnVmZmVyKSB7XG4gICAgICB0aGlzLl9idWZmZXIgPSBhd2FpdCB0aGlzLl9maWxlLnRvQnVmZmVyKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9idWZmZXI7XG4gIH1cblxuICAvKiogTUQ1IO2VtOyLnCDqs4TsgrAgKi9cbiAgYXN5bmMgbWQ1KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy50b0J1ZmZlcigpO1xuICAgIHJldHVybiBjcmVhdGVIYXNoKFwibWQ1XCIpLnVwZGF0ZShidWZmZXIpLmRpZ2VzdChcImhleFwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDtjIzsnbzsnYQg65SU7Iqk7YGs7JeQIOyggOyepVxuICAgKiBAcGFyYW0ga2V5IOyggOyepSDqsr3roZwgKOyYiDogJ3VwbG9hZHMvYXZhdGFyLnBuZycpXG4gICAqIEBwYXJhbSBkaXNrTmFtZSDrlJTsiqTtgawg7J2066aEICjquLDrs7g6IGRlZmF1bHQgZGlzaylcbiAgICogQHJldHVybnMg7KCA7J6l65CcIO2MjOydvOydmCBVUkxcbiAgICovXG4gIGFzeW5jIHNhdmVUb0Rpc2soa2V5OiBzdHJpbmcsIGRpc2tOYW1lPzogRHJpdmVyS2V5KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyDsiJztmZgg7J2Y7KG07ISxIOuwqeyngOulvCDsnITtlbQg64+Z7KCBIGltcG9ydFxuICAgIGNvbnN0IHsgU29uYW11IH0gPSBhd2FpdCBpbXBvcnQoXCIuLi9hcGkvc29uYW11XCIpO1xuICAgIGNvbnN0IGRpc2sgPSBTb25hbXUuc3RvcmFnZS51c2UoZGlza05hbWUpO1xuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMudG9CdWZmZXIoKTtcblxuICAgIGF3YWl0IGRpc2sucHV0KGtleSwgbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSwge1xuICAgICAgY29udGVudFR5cGU6IHRoaXMubWltZXR5cGUsXG4gICAgfSk7XG5cbiAgICB0aGlzLl91cmwgPSBhd2FpdCBkaXNrLmdldFNpZ25lZFVybChrZXkpO1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICAvKiog7JuQ67O4IE11bHRpcGFydEZpbGUg7KCR6re8ICovXG4gIGdldCByYXcoKTogTXVsdGlwYXJ0RmlsZSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGU7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwibWltZSIsIlVwbG9hZGVkRmlsZSIsIl9maWxlIiwiX2J1ZmZlciIsIl91cmwiLCJmaWxlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsInNpemUiLCJieXRlc1JlYWQiLCJleHRuYW1lIiwiZXh0ZW5zaW9uIiwidXJsIiwidG9CdWZmZXIiLCJtZDUiLCJidWZmZXIiLCJ1cGRhdGUiLCJkaWdlc3QiLCJzYXZlVG9EaXNrIiwia2V5IiwiZGlza05hbWUiLCJTb25hbXUiLCJkaXNrIiwic3RvcmFnZSIsInVzZSIsInB1dCIsIlVpbnQ4QXJyYXkiLCJjb250ZW50VHlwZSIsImdldFNpZ25lZFVybCIsInJhdyJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsVUFBVSxRQUFRLFNBQVM7QUFDcEMsT0FBT0MsVUFBVSxhQUFhO0FBRzlCOztDQUVDLEdBQ0QsT0FBTyxNQUFNQztJQUNIQyxNQUFxQjtJQUNyQkMsUUFBaUI7SUFDakJDLEtBQWM7SUFFdEIsWUFBWUMsSUFBbUIsQ0FBRTtRQUMvQixJQUFJLENBQUNILEtBQUssR0FBR0c7SUFDZjtJQUVBLFdBQVcsR0FDWCxJQUFJQyxXQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQ0osS0FBSyxDQUFDSSxRQUFRO0lBQzVCO0lBRUEsWUFBWSxHQUNaLElBQUlDLFdBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDTCxLQUFLLENBQUNLLFFBQVE7SUFDNUI7SUFFQSxrQkFBa0IsR0FDbEIsSUFBSUMsT0FBZTtRQUNqQixPQUFPLElBQUksQ0FBQ04sS0FBSyxDQUFDRyxJQUFJLENBQUNJLFNBQVM7SUFDbEM7SUFFQSxlQUFlLEdBQ2YsSUFBSUMsVUFBMEI7UUFDNUIsT0FBT1YsS0FBS1csU0FBUyxDQUFDLElBQUksQ0FBQ1QsS0FBSyxDQUFDSyxRQUFRO0lBQzNDO0lBRUEseUJBQXlCLEdBQ3pCLElBQUlLLE1BQTBCO1FBQzVCLE9BQU8sSUFBSSxDQUFDUixJQUFJO0lBQ2xCO0lBRUEscUJBQXFCLEdBQ3JCLE1BQU1TLFdBQTRCO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUNWLE9BQU8sRUFBRTtZQUNqQixJQUFJLENBQUNBLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQ0QsS0FBSyxDQUFDVyxRQUFRO1FBQzFDO1FBQ0EsT0FBTyxJQUFJLENBQUNWLE9BQU87SUFDckI7SUFFQSxjQUFjLEdBQ2QsTUFBTVcsTUFBdUI7UUFDM0IsTUFBTUMsU0FBUyxNQUFNLElBQUksQ0FBQ0YsUUFBUTtRQUNsQyxPQUFPZCxXQUFXLE9BQU9pQixNQUFNLENBQUNELFFBQVFFLE1BQU0sQ0FBQztJQUNqRDtJQUVBOzs7OztHQUtDLEdBQ0QsTUFBTUMsV0FBV0MsR0FBVyxFQUFFQyxRQUFvQixFQUFtQjtRQUNuRSwwQkFBMEI7UUFDMUIsTUFBTSxFQUFFQyxNQUFNLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQztRQUNoQyxNQUFNQyxPQUFPRCxPQUFPRSxPQUFPLENBQUNDLEdBQUcsQ0FBQ0o7UUFDaEMsTUFBTUwsU0FBUyxNQUFNLElBQUksQ0FBQ0YsUUFBUTtRQUVsQyxNQUFNUyxLQUFLRyxHQUFHLENBQUNOLEtBQUssSUFBSU8sV0FBV1gsU0FBUztZQUMxQ1ksYUFBYSxJQUFJLENBQUNwQixRQUFRO1FBQzVCO1FBRUEsSUFBSSxDQUFDSCxJQUFJLEdBQUcsTUFBTWtCLEtBQUtNLFlBQVksQ0FBQ1Q7UUFDcEMsT0FBTyxJQUFJLENBQUNmLElBQUk7SUFDbEI7SUFFQSx3QkFBd0IsR0FDeEIsSUFBSXlCLE1BQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDM0IsS0FBSztJQUNuQjtBQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/services.template.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,qBAAa,kBAAmB,SAAQ,QAAQ;;IAK9C,gBAAgB;;;;IAOhB,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC;;;;;;;
|
|
1
|
+
{"version":3,"file":"services.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/services.template.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,qBAAa,kBAAmB,SAAQ,QAAQ;;IAK9C,gBAAgB;;;;IAOhB,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC;;;;;;;CAgPvC"}
|
|
@@ -36,19 +36,19 @@ export class Template__services extends Template {
|
|
|
36
36
|
// @stream 데코레이터가 있으면 SSE 스트림 함수 생성
|
|
37
37
|
if (api.streamOptions) {
|
|
38
38
|
const paramsWithoutContext = api.parameters.filter((param)=>!ApiParamType.isContext(param.type) && !ApiParamType.isRefKnex(param.type) && !(param.optional === true && param.name.startsWith("_")));
|
|
39
|
-
const paramsDef = apiParamToTsCode(paramsWithoutContext, importKeys);
|
|
40
39
|
const apiBaseUrl = `${Sonamu.config.api.route.prefix}${api.path}`;
|
|
41
40
|
const methodNameStream = api.options.resourceName ? `use${inflection.camelize(api.options.resourceName)}` : `use${inflection.camelize(api.methodName)}`;
|
|
42
41
|
const methodNameStreamCamelized = inflection.camelize(methodNameStream, true);
|
|
43
42
|
const eventsTypeDef = zodTypeToTsTypeDef(api.streamOptions.events);
|
|
44
|
-
|
|
43
|
+
// 파라미터를 객체 형태로 정의 (타입과 실제 값 모두에 사용)
|
|
44
|
+
const paramsDefAsObject = paramsWithoutContext.length > 0 ? `{ ${paramsWithoutContext.map((p)=>`${p.name}: ${apiParamTypeToTsType(p.type, importKeys)}`).join(", ")} }` : "{}";
|
|
45
45
|
functions.push(`
|
|
46
46
|
export function ${methodNameStreamCamelized}(
|
|
47
|
-
params: ${
|
|
47
|
+
params: ${paramsDefAsObject},
|
|
48
48
|
handlers: EventHandlers<${eventsTypeDef} & { end?: () => void }>,
|
|
49
49
|
options: SSEStreamOptions
|
|
50
50
|
) {
|
|
51
|
-
return useSSEStream<${eventsTypeDef}>(\`${apiBaseUrl}\`,
|
|
51
|
+
return useSSEStream<${eventsTypeDef}>(\`${apiBaseUrl}\`, params, handlers, options);
|
|
52
52
|
}
|
|
53
53
|
`.trim());
|
|
54
54
|
continue;
|
|
@@ -168,6 +168,9 @@ ${functions.join("\n\n")}
|
|
|
168
168
|
"ListResult"
|
|
169
169
|
]),
|
|
170
170
|
customHeaders: [
|
|
171
|
+
"/** biome-ignore-all lint: generated는 무시 */",
|
|
172
|
+
"/** biome-ignore-all assist: generated는 무시 */",
|
|
173
|
+
"",
|
|
171
174
|
`import { queryOptions, useQuery, useMutation } from '@tanstack/react-query';`,
|
|
172
175
|
`import type { AxiosProgressEvent } from 'axios';`,
|
|
173
176
|
`import qs from 'qs';`,
|
|
@@ -177,4 +180,4 @@ ${functions.join("\n\n")}
|
|
|
177
180
|
}
|
|
178
181
|
}
|
|
179
182
|
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvc2VydmljZXMudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcbmltcG9ydCB7IGRpZmYsIHVuaXF1ZSB9IGZyb20gXCJyYWRhc2hpXCI7XG5pbXBvcnQge1xuICBhcGlQYXJhbVRvVHNDb2RlLFxuICBhcGlQYXJhbVR5cGVUb1RzVHlwZSxcbiAgdW53cmFwUHJvbWlzZU9uY2UsXG59IGZyb20gXCIuLi8uLi9hcGkvY29kZS1jb252ZXJ0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IEV4dGVuZGVkQXBpIH0gZnJvbSBcIi4uLy4uL2FwaS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IEFwaVBhcmFtVHlwZSB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB7IHpvZFR5cGVUb1RzVHlwZURlZiB9IGZyb20gXCIuLi96b2QtY29udmVydGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fc2VydmljZXMgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwic2VydmljZXNcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IFwiOnRhcmdldC9zcmMvc2VydmljZXNcIixcbiAgICAgIHBhdGg6IGBzZXJ2aWNlcy5nZW5lcmF0ZWQudHNgLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIoe306IFRlbXBsYXRlT3B0aW9uc1tcInNlcnZpY2VzXCJdKSB7XG4gICAgY29uc3QgeyBhcGlzIH0gPSBTb25hbXUuc3luY2VyO1xuXG4gICAgLy8g66qo642467OE66GcIOq3uOujue2ZlFxuICAgIGNvbnN0IGFwaXNCeU1vZGVsID0gbmV3IE1hcDxzdHJpbmcsIEV4dGVuZGVkQXBpW10+KCk7XG4gICAgZm9yIChjb25zdCBhcGkgb2YgYXBpcykge1xuICAgICAgY29uc3QgbW9kZWxOYW1lID0gYXBpLm1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKTtcbiAgICAgIGlmICghYXBpc0J5TW9kZWwuaGFzKG1vZGVsTmFtZSkpIHtcbiAgICAgICAgYXBpc0J5TW9kZWwuc2V0KG1vZGVsTmFtZSwgW10pO1xuICAgICAgfVxuICAgICAgYXBpc0J5TW9kZWwuZ2V0KG1vZGVsTmFtZSk/LnB1c2goYXBpKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IG5hbWVzcGFjZXM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IHR5cGVQYXJhbU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBbbW9kZWxOYW1lLCBtb2RlbEFwaXNdIG9mIGFwaXNCeU1vZGVsKSB7XG4gICAgICBjb25zdCBmdW5jdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgYXBpIG9mIG1vZGVsQXBpcykge1xuICAgICAgICAvLyBAc3RyZWFtIOuNsOy9lOugiOydtO2EsOqwgCDsnojsnLzrqbQgU1NFIOyKpO2KuOumvCDtlajsiJgg7IOd7ISxXG4gICAgICAgIGlmIChhcGkuc3RyZWFtT3B0aW9ucykge1xuICAgICAgICAgIGNvbnN0IHBhcmFtc1dpdGhvdXRDb250ZXh0ID0gYXBpLnBhcmFtZXRlcnMuZmlsdGVyKFxuICAgICAgICAgICAgKHBhcmFtKSA9PlxuICAgICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzQ29udGV4dChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzUmVmS25leChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgICAhKHBhcmFtLm9wdGlvbmFsID09PSB0cnVlICYmIHBhcmFtLm5hbWUuc3RhcnRzV2l0aChcIl9cIikpLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBwYXJhbXNEZWYgPSBhcGlQYXJhbVRvVHNDb2RlKHBhcmFtc1dpdGhvdXRDb250ZXh0LCBpbXBvcnRLZXlzKTtcbiAgICAgICAgICBjb25zdCBhcGlCYXNlVXJsID0gYCR7U29uYW11LmNvbmZpZy5hcGkucm91dGUucHJlZml4fSR7YXBpLnBhdGh9YDtcblxuICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWVTdHJlYW0gPSBhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWVcbiAgICAgICAgICAgID8gYHVzZSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWUpfWBcbiAgICAgICAgICAgIDogYHVzZSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkubWV0aG9kTmFtZSl9YDtcbiAgICAgICAgICBjb25zdCBtZXRob2ROYW1lU3RyZWFtQ2FtZWxpemVkID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lU3RyZWFtLCB0cnVlKTtcblxuICAgICAgICAgIGNvbnN0IGV2ZW50c1R5cGVEZWYgPSB6b2RUeXBlVG9Uc1R5cGVEZWYoYXBpLnN0cmVhbU9wdGlvbnMuZXZlbnRzKTtcblxuICAgICAgICAgIGNvbnN0IHBhcmFtc0RlZkFzT2JqZWN0ID1cbiAgICAgICAgICAgIHBhcmFtc1dpdGhvdXRDb250ZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyBgeyAke3BhcmFtc1dpdGhvdXRDb250ZXh0Lm1hcCgocCkgPT4gcC5uYW1lKS5qb2luKFwiLCBcIil9IH1gXG4gICAgICAgICAgICAgIDogXCJ7fVwiO1xuXG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBgXG5leHBvcnQgZnVuY3Rpb24gJHttZXRob2ROYW1lU3RyZWFtQ2FtZWxpemVkfShcbiAgcGFyYW1zOiAke3BhcmFtc0RlZiA/IGB7ICR7cGFyYW1zV2l0aG91dENvbnRleHQubWFwKChwKSA9PiBgJHtwLm5hbWV9OiAke2FwaVBhcmFtVHlwZVRvVHNUeXBlKHAudHlwZSwgaW1wb3J0S2V5cyl9YCkuam9pbihcIiwgXCIpfSB9YCA6IFwie31cIn0sXG4gIGhhbmRsZXJzOiBFdmVudEhhbmRsZXJzPCR7ZXZlbnRzVHlwZURlZn0gJiB7IGVuZD86ICgpID0+IHZvaWQgfT4sXG4gIG9wdGlvbnM6IFNTRVN0cmVhbU9wdGlvbnNcbikge1xuICByZXR1cm4gdXNlU1NFU3RyZWFtPCR7ZXZlbnRzVHlwZURlZn0+KFxcYCR7YXBpQmFzZVVybH1cXGAsICR7cGFyYW1zRGVmQXNPYmplY3R9LCBoYW5kbGVycywgb3B0aW9ucyk7XG59XG4gICAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29udGV4dCDsoJzsmbjtlZwg7YyM652866+47YSwXG4gICAgICAgIGNvbnN0IHBhcmFtc1dpdGhvdXRDb250ZXh0ID0gYXBpLnBhcmFtZXRlcnMuZmlsdGVyKFxuICAgICAgICAgIChwYXJhbSkgPT5cbiAgICAgICAgICAgICFBcGlQYXJhbVR5cGUuaXNDb250ZXh0KHBhcmFtLnR5cGUpICYmXG4gICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzUmVmS25leChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgIShwYXJhbS5vcHRpb25hbCA9PT0gdHJ1ZSAmJiBwYXJhbS5uYW1lLnN0YXJ0c1dpdGgoXCJfXCIpKSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyDtg4DsnoUg7YyM652866+47YSwIOygleydmFxuICAgICAgICBjb25zdCB0eXBlUGFyYW1ldGVyc0FzVHNUeXBlID0gYXBpLnR5cGVQYXJhbWV0ZXJzXG4gICAgICAgICAgLm1hcCgodHlwZVBhcmFtKSA9PiBhcGlQYXJhbVR5cGVUb1RzVHlwZSh0eXBlUGFyYW0sIGltcG9ydEtleXMpKVxuICAgICAgICAgIC5qb2luKFwiLCBcIik7XG4gICAgICAgIGNvbnN0IHR5cGVQYXJhbXNEZWYgPSB0eXBlUGFyYW1ldGVyc0FzVHNUeXBlID8gYDwke3R5cGVQYXJhbWV0ZXJzQXNUc1R5cGV9PmAgOiBcIlwiO1xuICAgICAgICB0eXBlUGFyYW1OYW1lcyA9IHR5cGVQYXJhbU5hbWVzLmNvbmNhdChhcGkudHlwZVBhcmFtZXRlcnMubWFwKCh0cCkgPT4gdHAuaWQpKTtcblxuICAgICAgICAvLyDtjIzrnbzrr7jthLAg7KCV7J2YXG4gICAgICAgIGNvbnN0IHBhcmFtc0RlZiA9IGFwaVBhcmFtVG9Uc0NvZGUocGFyYW1zV2l0aG91dENvbnRleHQsIGltcG9ydEtleXMpO1xuICAgICAgICBjb25zdCBwYXJhbU5hbWVzID0gcGFyYW1zV2l0aG91dENvbnRleHQubWFwKChwKSA9PiBwLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICAgICAgICAvLyDrpqzthLQg7YOA7J6FIOygleydmFxuICAgICAgICBjb25zdCByZXR1cm5UeXBlRGVmID0gYXBpUGFyYW1UeXBlVG9Uc1R5cGUoXG4gICAgICAgICAgYXNzZXJ0RGVmaW5lZCh1bndyYXBQcm9taXNlT25jZShhcGkucmV0dXJuVHlwZSkpLFxuICAgICAgICAgIGltcG9ydEtleXMsXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8g6riw67O4IFVSTFxuICAgICAgICBjb25zdCBhcGlCYXNlVXJsID0gYCR7U29uYW11LmNvbmZpZy5hcGkucm91dGUucHJlZml4fSR7YXBpLnBhdGh9YDtcblxuICAgICAgICBjb25zdCBjbGllbnRzID0gYXBpLm9wdGlvbnMuY2xpZW50cyB8fCBbXTtcblxuICAgICAgICAvLyAxLiBheGlvcyDtlajsiJgg7IOd7ISxXG4gICAgICAgIC8vIHJlc291cmNlTmFtZeydtCDsnojsnLzrqbQgZ2V0ICsgcmVzb3VyY2VOYW1lIO2Yle2DnOuhnCDtlajsiJjrqoUg7IOd7ISxXG4gICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWVcbiAgICAgICAgICA/IGBnZXQke2luZmxlY3Rpb24uY2FtZWxpemUoYXBpLm9wdGlvbnMucmVzb3VyY2VOYW1lKX1gXG4gICAgICAgICAgOiBhcGkubWV0aG9kTmFtZTtcblxuICAgICAgICAvLyBheGlvcy1tdWx0aXBhcnQg7LKY66asICjtjIzsnbwg7JeF66Gc65OcKVxuICAgICAgICBpZiAoY2xpZW50cy5pbmNsdWRlcyhcImF4aW9zLW11bHRpcGFydFwiKSkge1xuICAgICAgICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBhcGkudXBsb2FkT3B0aW9ucz8ubW9kZSA9PT0gXCJtdWx0aXBsZVwiO1xuICAgICAgICAgIGNvbnN0IGZpbGVQYXJhbU5hbWUgPSBpc011bHRpcGxlID8gXCJmaWxlc1wiIDogXCJmaWxlXCI7XG4gICAgICAgICAgY29uc3QgZmlsZVBhcmFtVHlwZSA9IGlzTXVsdGlwbGUgPyBcIkZpbGVbXVwiIDogXCJGaWxlXCI7XG5cbiAgICAgICAgICBjb25zdCBmb3JtRGF0YUFwcGVuZCA9IGlzTXVsdGlwbGVcbiAgICAgICAgICAgID8gYCR7ZmlsZVBhcmFtTmFtZX0uZm9yRWFjaChmID0+IHsgZm9ybURhdGEuYXBwZW5kKFwiJHtmaWxlUGFyYW1OYW1lfVwiLCBmKTsgfSk7YFxuICAgICAgICAgICAgOiBgZm9ybURhdGEuYXBwZW5kKFwiJHtmaWxlUGFyYW1OYW1lfVwiLCAke2ZpbGVQYXJhbU5hbWV9KTtgO1xuXG4gICAgICAgICAgY29uc3Qgb3RoZXJQYXJhbXNBcHBlbmQgPSBwYXJhbXNXaXRob3V0Q29udGV4dFxuICAgICAgICAgICAgLm1hcCgocGFyYW0pID0+IGBmb3JtRGF0YS5hcHBlbmQoJyR7cGFyYW0ubmFtZX0nLCBTdHJpbmcoJHtwYXJhbS5uYW1lfSkpO2ApXG4gICAgICAgICAgICAuam9pbihcIlxcbiAgICBcIik7XG5cbiAgICAgICAgICBjb25zdCBwYXJhbXNEZWZDb21tYSA9IHBhcmFtc0RlZiAhPT0gXCJcIiA/IFwiLCBcIiA6IFwiXCI7XG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBgXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gJHttZXRob2ROYW1lfSR7dHlwZVBhcmFtc0RlZn0oXG4gICR7cGFyYW1zRGVmfSR7cGFyYW1zRGVmQ29tbWF9XG4gICR7ZmlsZVBhcmFtTmFtZX06ICR7ZmlsZVBhcmFtVHlwZX0sXG4gIG9uVXBsb2FkUHJvZ3Jlc3M/OiAocGU6IEF4aW9zUHJvZ3Jlc3NFdmVudCkgPT4gdm9pZFxuKTogUHJvbWlzZTwke3JldHVyblR5cGVEZWZ9PiB7XG4gIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICR7Zm9ybURhdGFBcHBlbmR9XG4gICR7b3RoZXJQYXJhbXNBcHBlbmR9XG4gIHJldHVybiBmZXRjaCh7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgdXJsOiBcXGAke2FwaUJhc2VVcmx9XFxgLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiLFxuICAgIH0sXG4gICAgb25VcGxvYWRQcm9ncmVzcyxcbiAgICBkYXRhOiBmb3JtRGF0YSxcbiAgICAke2FwaS5vcHRpb25zLnRpbWVvdXQgPyBgc2lnbmFsOiBBYm9ydFNpZ25hbC50aW1lb3V0KCR7YXBpLm9wdGlvbnMudGltZW91dH0pLGAgOiBcIlwifVxuICB9KTtcbn1cbiAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGFwaS5vcHRpb25zLmh0dHBNZXRob2QgPT09IFwiR0VUXCIpIHtcbiAgICAgICAgICBjb25zdCBoYXNQYXJhbXMgPSBwYXJhbXNXaXRob3V0Q29udGV4dC5sZW5ndGggPiAwO1xuICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgYFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICR7bWV0aG9kTmFtZX0ke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSk6IFByb21pc2U8JHtyZXR1cm5UeXBlRGVmfT4ge1xuICByZXR1cm4gZmV0Y2goe1xuICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICB1cmw6IFxcYCR7YXBpQmFzZVVybH0ke2hhc1BhcmFtcyA/IGA/XFwke3FzLnN0cmluZ2lmeSh7ICR7cGFyYW1OYW1lc30gfSl9YCA6IFwiXCJ9XFxgLFxuICAgICR7YXBpLm9wdGlvbnMudGltZW91dCA/IGBzaWduYWw6IEFib3J0U2lnbmFsLnRpbWVvdXQoJHthcGkub3B0aW9ucy50aW1lb3V0fSksYCA6IFwiXCJ9XG4gIH0pO1xufVxuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaGFzUGFyYW1zID0gcGFyYW1zV2l0aG91dENvbnRleHQubGVuZ3RoID4gMDtcbiAgICAgICAgICBmdW5jdGlvbnMucHVzaChcbiAgICAgICAgICAgIGBcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiAke21ldGhvZE5hbWV9JHt0eXBlUGFyYW1zRGVmfSgke3BhcmFtc0RlZn0pOiBQcm9taXNlPCR7cmV0dXJuVHlwZURlZn0+IHtcbiAgcmV0dXJuIGZldGNoKHtcbiAgICBtZXRob2Q6IFwiJHthcGkub3B0aW9ucy5odHRwTWV0aG9kfVwiLFxuICAgIHVybDogXFxgJHthcGlCYXNlVXJsfVxcYCxcbiAgICAke2hhc1BhcmFtcyA/IGBkYXRhOiB7ICR7cGFyYW1OYW1lc30gfSxgIDogXCJcIn1cbiAgICAke2FwaS5vcHRpb25zLnRpbWVvdXQgPyBgc2lnbmFsOiBBYm9ydFNpZ25hbC50aW1lb3V0KCR7YXBpLm9wdGlvbnMudGltZW91dH0pLGAgOiBcIlwifVxuICB9KTtcbn1cbiAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gcXVlcnlPcHRpb25zICsgdXNlUXVlcnkgKHRhbnN0YWNrLXF1ZXJ5KVxuICAgICAgICBpZiAoY2xpZW50cy5pbmNsdWRlcyhcInRhbnN0YWNrLXF1ZXJ5XCIpKSB7XG4gICAgICAgICAgY29uc3QgaG9va05hbWUgPSBhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWVcbiAgICAgICAgICAgID8gaW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWUsIHRydWUpXG4gICAgICAgICAgICA6IGluZmxlY3Rpb24uY2FtZWxpemUoYXBpLm1ldGhvZE5hbWUsIHRydWUpO1xuXG4gICAgICAgICAgLy8gcXVlcnlPcHRpb25zXG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBgXG5leHBvcnQgY29uc3QgJHttZXRob2ROYW1lfVF1ZXJ5T3B0aW9ucyA9ICR7dHlwZVBhcmFtc0RlZn0oJHtwYXJhbXNEZWZ9KSA9PiBxdWVyeU9wdGlvbnMoe1xuICBxdWVyeUtleTogWycke21vZGVsTmFtZX0nLCAnJHttZXRob2ROYW1lfScke3BhcmFtTmFtZXMgPyBgLCAke3BhcmFtTmFtZXN9YCA6IFwiXCJ9XSxcbiAgcXVlcnlGbjogKCkgPT4gJHttZXRob2ROYW1lfSgke3BhcmFtTmFtZXN9KVxufSk7XG4gICAgICAgICAgYC50cmltKCksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIHVzZVF1ZXJ5IGhvb2tcbiAgICAgICAgICBmdW5jdGlvbnMucHVzaChcbiAgICAgICAgICAgIGBcbmV4cG9ydCBjb25zdCB1c2Uke2luZmxlY3Rpb24uY2FtZWxpemUoaG9va05hbWUpfSA9ICR7dHlwZVBhcmFtc0RlZn0oJHtwYXJhbXNEZWZ9JHtcbiAgICAgICAgICAgICAgcGFyYW1zRGVmID8gXCIsIFwiIDogXCJcIlxuICAgICAgICAgICAgfW9wdGlvbnM/OiB7IGVuYWJsZWQ/OiBib29sZWFuIH0pID0+XG4gIHVzZVF1ZXJ5KHtcbiAgICAuLi4ke21ldGhvZE5hbWV9UXVlcnlPcHRpb25zKCR7cGFyYW1OYW1lc30pLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG4gICAgICAgICAgYC50cmltKCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMuIHVzZU11dGF0aW9uICh0YW5zdGFjay1tdXRhdGlvbilcbiAgICAgICAgaWYgKGNsaWVudHMuaW5jbHVkZXMoXCJ0YW5zdGFjay1tdXRhdGlvblwiKSkge1xuICAgICAgICAgIGNvbnN0IGhvb2tOYW1lID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkubWV0aG9kTmFtZSk7XG4gICAgICAgICAgY29uc3QgbXV0YXRpb25QYXJhbVR5cGUgPVxuICAgICAgICAgICAgcGFyYW1zV2l0aG91dENvbnRleHQubGVuZ3RoID4gMFxuICAgICAgICAgICAgICA/IGB7ICR7cGFyYW1zV2l0aG91dENvbnRleHRcbiAgICAgICAgICAgICAgICAgIC5tYXAoKHApID0+IGAke3AubmFtZX06ICR7YXBpUGFyYW1UeXBlVG9Uc1R5cGUocC50eXBlLCBbXSl9YClcbiAgICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIil9IH1gXG4gICAgICAgICAgICAgIDogXCJ2b2lkXCI7XG4gICAgICAgICAgY29uc3QgbXV0YXRpb25QYXJhbU5hbWVzID1cbiAgICAgICAgICAgIHBhcmFtc1dpdGhvdXRDb250ZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyBwYXJhbXNXaXRob3V0Q29udGV4dC5tYXAoKHApID0+IGBwYXJhbXMuJHtwLm5hbWV9YCkuam9pbihcIiwgXCIpXG4gICAgICAgICAgICAgIDogXCJcIjtcblxuICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgYFxuZXhwb3J0IGNvbnN0IHVzZSR7aG9va05hbWV9TXV0YXRpb24gPSAke3R5cGVQYXJhbXNEZWZ9KCkgPT4gdXNlTXV0YXRpb24oe1xuICBtdXRhdGlvbkZuOiAocGFyYW1zOiAke211dGF0aW9uUGFyYW1UeXBlfSkgPT4gJHttZXRob2ROYW1lfSgke211dGF0aW9uUGFyYW1OYW1lc30pXG59KTtcbiAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5hbWVzcGFjZXMucHVzaChcbiAgICAgICAgYFxuZXhwb3J0IG5hbWVzcGFjZSAke21vZGVsTmFtZX1TZXJ2aWNlIHtcbiR7ZnVuY3Rpb25zLmpvaW4oXCJcXG5cXG5cIil9XG59XG4gICAgICBgLnRyaW0oKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aCgpLFxuICAgICAgYm9keTogbmFtZXNwYWNlcy5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogZGlmZih1bmlxdWUoaW1wb3J0S2V5cyksIFsuLi50eXBlUGFyYW1OYW1lcywgXCJMaXN0UmVzdWx0XCJdKSxcbiAgICAgIGN1c3RvbUhlYWRlcnM6IFtcbiAgICAgICAgYGltcG9ydCB7IHF1ZXJ5T3B0aW9ucywgdXNlUXVlcnksIHVzZU11dGF0aW9uIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztgLFxuICAgICAgICBgaW1wb3J0IHR5cGUgeyBBeGlvc1Byb2dyZXNzRXZlbnQgfSBmcm9tICdheGlvcyc7YCxcbiAgICAgICAgYGltcG9ydCBxcyBmcm9tICdxcyc7YCxcbiAgICAgICAgYGltcG9ydCB7IHR5cGUgTGlzdFJlc3VsdCwgZmV0Y2gsIHR5cGUgRXZlbnRIYW5kbGVycywgdHlwZSBTU0VTdHJlYW1PcHRpb25zLCB1c2VTU0VTdHJlYW0gfSBmcm9tICcuL3NvbmFtdS5zaGFyZWQnO2AsXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJpbmZsZWN0aW9uIiwiZGlmZiIsInVuaXF1ZSIsImFwaVBhcmFtVG9Uc0NvZGUiLCJhcGlQYXJhbVR5cGVUb1RzVHlwZSIsInVud3JhcFByb21pc2VPbmNlIiwiU29uYW11IiwiQXBpUGFyYW1UeXBlIiwiYXNzZXJ0RGVmaW5lZCIsIlRlbXBsYXRlIiwiem9kVHlwZVRvVHNUeXBlRGVmIiwiVGVtcGxhdGVfX3NlcnZpY2VzIiwiZ2V0VGFyZ2V0QW5kUGF0aCIsInRhcmdldCIsInBhdGgiLCJyZW5kZXIiLCJhcGlzIiwic3luY2VyIiwiYXBpc0J5TW9kZWwiLCJNYXAiLCJhcGkiLCJtb2RlbE5hbWUiLCJyZXBsYWNlIiwiaGFzIiwic2V0IiwiZ2V0IiwicHVzaCIsImltcG9ydEtleXMiLCJuYW1lc3BhY2VzIiwidHlwZVBhcmFtTmFtZXMiLCJtb2RlbEFwaXMiLCJmdW5jdGlvbnMiLCJzdHJlYW1PcHRpb25zIiwicGFyYW1zV2l0aG91dENvbnRleHQiLCJwYXJhbWV0ZXJzIiwiZmlsdGVyIiwicGFyYW0iLCJpc0NvbnRleHQiLCJ0eXBlIiwiaXNSZWZLbmV4Iiwib3B0aW9uYWwiLCJuYW1lIiwic3RhcnRzV2l0aCIsInBhcmFtc0RlZiIsImFwaUJhc2VVcmwiLCJjb25maWciLCJyb3V0ZSIsInByZWZpeCIsIm1ldGhvZE5hbWVTdHJlYW0iLCJvcHRpb25zIiwicmVzb3VyY2VOYW1lIiwiY2FtZWxpemUiLCJtZXRob2ROYW1lIiwibWV0aG9kTmFtZVN0cmVhbUNhbWVsaXplZCIsImV2ZW50c1R5cGVEZWYiLCJldmVudHMiLCJwYXJhbXNEZWZBc09iamVjdCIsImxlbmd0aCIsIm1hcCIsInAiLCJqb2luIiwidHJpbSIsInR5cGVQYXJhbWV0ZXJzQXNUc1R5cGUiLCJ0eXBlUGFyYW1ldGVycyIsInR5cGVQYXJhbSIsInR5cGVQYXJhbXNEZWYiLCJjb25jYXQiLCJ0cCIsImlkIiwicGFyYW1OYW1lcyIsInJldHVyblR5cGVEZWYiLCJyZXR1cm5UeXBlIiwiY2xpZW50cyIsImluY2x1ZGVzIiwiaXNNdWx0aXBsZSIsInVwbG9hZE9wdGlvbnMiLCJtb2RlIiwiZmlsZVBhcmFtTmFtZSIsImZpbGVQYXJhbVR5cGUiLCJmb3JtRGF0YUFwcGVuZCIsIm90aGVyUGFyYW1zQXBwZW5kIiwicGFyYW1zRGVmQ29tbWEiLCJ0aW1lb3V0IiwiaHR0cE1ldGhvZCIsImhhc1BhcmFtcyIsImhvb2tOYW1lIiwibXV0YXRpb25QYXJhbVR5cGUiLCJtdXRhdGlvblBhcmFtTmFtZXMiLCJib2R5IiwiY3VzdG9tSGVhZGVycyJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZ0JBQWdCLGFBQWE7QUFDcEMsU0FBU0MsSUFBSSxFQUFFQyxNQUFNLFFBQVEsVUFBVTtBQUN2QyxTQUNFQyxnQkFBZ0IsRUFDaEJDLG9CQUFvQixFQUNwQkMsaUJBQWlCLFFBQ1osK0JBQTRCO0FBRW5DLFNBQVNDLE1BQU0sUUFBUSxzQkFBbUI7QUFFMUMsU0FBU0MsWUFBWSxRQUFRLHVCQUFvQjtBQUNqRCxTQUFTQyxhQUFhLFFBQVEsdUJBQW9CO0FBQ2xELFNBQVNDLFFBQVEsUUFBUSxpQkFBYztBQUN2QyxTQUFTQyxrQkFBa0IsUUFBUSxzQkFBbUI7QUFFdEQsT0FBTyxNQUFNQywyQkFBMkJGO0lBQ3RDLGFBQWM7UUFDWixLQUFLLENBQUM7SUFDUjtJQUVBRyxtQkFBbUI7UUFDakIsT0FBTztZQUNMQyxRQUFRO1lBQ1JDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztRQUMvQjtJQUNGO0lBRUFDLE9BQU8sRUFBK0IsRUFBRTtRQUN0QyxNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHVixPQUFPVyxNQUFNO1FBRTlCLFdBQVc7UUFDWCxNQUFNQyxjQUFjLElBQUlDO1FBQ3hCLEtBQUssTUFBTUMsT0FBT0osS0FBTTtZQUN0QixNQUFNSyxZQUFZRCxJQUFJQyxTQUFTLENBQUNDLE9BQU8sQ0FBQyxVQUFVLElBQUlBLE9BQU8sQ0FBQyxVQUFVO1lBQ3hFLElBQUksQ0FBQ0osWUFBWUssR0FBRyxDQUFDRixZQUFZO2dCQUMvQkgsWUFBWU0sR0FBRyxDQUFDSCxXQUFXLEVBQUU7WUFDL0I7WUFDQUgsWUFBWU8sR0FBRyxDQUFDSixZQUFZSyxLQUFLTjtRQUNuQztRQUVBLE1BQU1PLGFBQXVCLEVBQUU7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
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvc2VydmljZXMudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcbmltcG9ydCB7IGRpZmYsIHVuaXF1ZSB9IGZyb20gXCJyYWRhc2hpXCI7XG5pbXBvcnQge1xuICBhcGlQYXJhbVRvVHNDb2RlLFxuICBhcGlQYXJhbVR5cGVUb1RzVHlwZSxcbiAgdW53cmFwUHJvbWlzZU9uY2UsXG59IGZyb20gXCIuLi8uLi9hcGkvY29kZS1jb252ZXJ0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IEV4dGVuZGVkQXBpIH0gZnJvbSBcIi4uLy4uL2FwaS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IEFwaVBhcmFtVHlwZSB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB7IHpvZFR5cGVUb1RzVHlwZURlZiB9IGZyb20gXCIuLi96b2QtY29udmVydGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fc2VydmljZXMgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwic2VydmljZXNcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IFwiOnRhcmdldC9zcmMvc2VydmljZXNcIixcbiAgICAgIHBhdGg6IGBzZXJ2aWNlcy5nZW5lcmF0ZWQudHNgLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIoe306IFRlbXBsYXRlT3B0aW9uc1tcInNlcnZpY2VzXCJdKSB7XG4gICAgY29uc3QgeyBhcGlzIH0gPSBTb25hbXUuc3luY2VyO1xuXG4gICAgLy8g66qo642467OE66GcIOq3uOujue2ZlFxuICAgIGNvbnN0IGFwaXNCeU1vZGVsID0gbmV3IE1hcDxzdHJpbmcsIEV4dGVuZGVkQXBpW10+KCk7XG4gICAgZm9yIChjb25zdCBhcGkgb2YgYXBpcykge1xuICAgICAgY29uc3QgbW9kZWxOYW1lID0gYXBpLm1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKTtcbiAgICAgIGlmICghYXBpc0J5TW9kZWwuaGFzKG1vZGVsTmFtZSkpIHtcbiAgICAgICAgYXBpc0J5TW9kZWwuc2V0KG1vZGVsTmFtZSwgW10pO1xuICAgICAgfVxuICAgICAgYXBpc0J5TW9kZWwuZ2V0KG1vZGVsTmFtZSk/LnB1c2goYXBpKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IG5hbWVzcGFjZXM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IHR5cGVQYXJhbU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBbbW9kZWxOYW1lLCBtb2RlbEFwaXNdIG9mIGFwaXNCeU1vZGVsKSB7XG4gICAgICBjb25zdCBmdW5jdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgYXBpIG9mIG1vZGVsQXBpcykge1xuICAgICAgICAvLyBAc3RyZWFtIOuNsOy9lOugiOydtO2EsOqwgCDsnojsnLzrqbQgU1NFIOyKpO2KuOumvCDtlajsiJgg7IOd7ISxXG4gICAgICAgIGlmIChhcGkuc3RyZWFtT3B0aW9ucykge1xuICAgICAgICAgIGNvbnN0IHBhcmFtc1dpdGhvdXRDb250ZXh0ID0gYXBpLnBhcmFtZXRlcnMuZmlsdGVyKFxuICAgICAgICAgICAgKHBhcmFtKSA9PlxuICAgICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzQ29udGV4dChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzUmVmS25leChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgICAhKHBhcmFtLm9wdGlvbmFsID09PSB0cnVlICYmIHBhcmFtLm5hbWUuc3RhcnRzV2l0aChcIl9cIikpLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBhcGlCYXNlVXJsID0gYCR7U29uYW11LmNvbmZpZy5hcGkucm91dGUucHJlZml4fSR7YXBpLnBhdGh9YDtcblxuICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWVTdHJlYW0gPSBhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWVcbiAgICAgICAgICAgID8gYHVzZSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWUpfWBcbiAgICAgICAgICAgIDogYHVzZSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkubWV0aG9kTmFtZSl9YDtcbiAgICAgICAgICBjb25zdCBtZXRob2ROYW1lU3RyZWFtQ2FtZWxpemVkID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lU3RyZWFtLCB0cnVlKTtcblxuICAgICAgICAgIGNvbnN0IGV2ZW50c1R5cGVEZWYgPSB6b2RUeXBlVG9Uc1R5cGVEZWYoYXBpLnN0cmVhbU9wdGlvbnMuZXZlbnRzKTtcblxuICAgICAgICAgIC8vIO2MjOudvOuvuO2EsOulvCDqsJ3ssrQg7ZiV7YOc66GcIOygleydmCAo7YOA7J6F6rO8IOyLpOygnCDqsJIg66qo65GQ7JeQIOyCrOyaqSlcbiAgICAgICAgICBjb25zdCBwYXJhbXNEZWZBc09iamVjdCA9XG4gICAgICAgICAgICBwYXJhbXNXaXRob3V0Q29udGV4dC5sZW5ndGggPiAwXG4gICAgICAgICAgICAgID8gYHsgJHtwYXJhbXNXaXRob3V0Q29udGV4dC5tYXAoKHApID0+IGAke3AubmFtZX06ICR7YXBpUGFyYW1UeXBlVG9Uc1R5cGUocC50eXBlLCBpbXBvcnRLZXlzKX1gKS5qb2luKFwiLCBcIil9IH1gXG4gICAgICAgICAgICAgIDogXCJ7fVwiO1xuXG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBgXG5leHBvcnQgZnVuY3Rpb24gJHttZXRob2ROYW1lU3RyZWFtQ2FtZWxpemVkfShcbiAgcGFyYW1zOiAke3BhcmFtc0RlZkFzT2JqZWN0fSxcbiAgaGFuZGxlcnM6IEV2ZW50SGFuZGxlcnM8JHtldmVudHNUeXBlRGVmfSAmIHsgZW5kPzogKCkgPT4gdm9pZCB9PixcbiAgb3B0aW9uczogU1NFU3RyZWFtT3B0aW9uc1xuKSB7XG4gIHJldHVybiB1c2VTU0VTdHJlYW08JHtldmVudHNUeXBlRGVmfT4oXFxgJHthcGlCYXNlVXJsfVxcYCwgcGFyYW1zLCBoYW5kbGVycywgb3B0aW9ucyk7XG59XG4gICAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29udGV4dCDsoJzsmbjtlZwg7YyM652866+47YSwXG4gICAgICAgIGNvbnN0IHBhcmFtc1dpdGhvdXRDb250ZXh0ID0gYXBpLnBhcmFtZXRlcnMuZmlsdGVyKFxuICAgICAgICAgIChwYXJhbSkgPT5cbiAgICAgICAgICAgICFBcGlQYXJhbVR5cGUuaXNDb250ZXh0KHBhcmFtLnR5cGUpICYmXG4gICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzUmVmS25leChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgIShwYXJhbS5vcHRpb25hbCA9PT0gdHJ1ZSAmJiBwYXJhbS5uYW1lLnN0YXJ0c1dpdGgoXCJfXCIpKSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyDtg4DsnoUg7YyM652866+47YSwIOygleydmFxuICAgICAgICBjb25zdCB0eXBlUGFyYW1ldGVyc0FzVHNUeXBlID0gYXBpLnR5cGVQYXJhbWV0ZXJzXG4gICAgICAgICAgLm1hcCgodHlwZVBhcmFtKSA9PiBhcGlQYXJhbVR5cGVUb1RzVHlwZSh0eXBlUGFyYW0sIGltcG9ydEtleXMpKVxuICAgICAgICAgIC5qb2luKFwiLCBcIik7XG4gICAgICAgIGNvbnN0IHR5cGVQYXJhbXNEZWYgPSB0eXBlUGFyYW1ldGVyc0FzVHNUeXBlID8gYDwke3R5cGVQYXJhbWV0ZXJzQXNUc1R5cGV9PmAgOiBcIlwiO1xuICAgICAgICB0eXBlUGFyYW1OYW1lcyA9IHR5cGVQYXJhbU5hbWVzLmNvbmNhdChhcGkudHlwZVBhcmFtZXRlcnMubWFwKCh0cCkgPT4gdHAuaWQpKTtcblxuICAgICAgICAvLyDtjIzrnbzrr7jthLAg7KCV7J2YXG4gICAgICAgIGNvbnN0IHBhcmFtc0RlZiA9IGFwaVBhcmFtVG9Uc0NvZGUocGFyYW1zV2l0aG91dENvbnRleHQsIGltcG9ydEtleXMpO1xuICAgICAgICBjb25zdCBwYXJhbU5hbWVzID0gcGFyYW1zV2l0aG91dENvbnRleHQubWFwKChwKSA9PiBwLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICAgICAgICAvLyDrpqzthLQg7YOA7J6FIOygleydmFxuICAgICAgICBjb25zdCByZXR1cm5UeXBlRGVmID0gYXBpUGFyYW1UeXBlVG9Uc1R5cGUoXG4gICAgICAgICAgYXNzZXJ0RGVmaW5lZCh1bndyYXBQcm9taXNlT25jZShhcGkucmV0dXJuVHlwZSkpLFxuICAgICAgICAgIGltcG9ydEtleXMsXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8g6riw67O4IFVSTFxuICAgICAgICBjb25zdCBhcGlCYXNlVXJsID0gYCR7U29uYW11LmNvbmZpZy5hcGkucm91dGUucHJlZml4fSR7YXBpLnBhdGh9YDtcblxuICAgICAgICBjb25zdCBjbGllbnRzID0gYXBpLm9wdGlvbnMuY2xpZW50cyB8fCBbXTtcblxuICAgICAgICAvLyAxLiBheGlvcyDtlajsiJgg7IOd7ISxXG4gICAgICAgIC8vIHJlc291cmNlTmFtZeydtCDsnojsnLzrqbQgZ2V0ICsgcmVzb3VyY2VOYW1lIO2Yle2DnOuhnCDtlajsiJjrqoUg7IOd7ISxXG4gICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWVcbiAgICAgICAgICA/IGBnZXQke2luZmxlY3Rpb24uY2FtZWxpemUoYXBpLm9wdGlvbnMucmVzb3VyY2VOYW1lKX1gXG4gICAgICAgICAgOiBhcGkubWV0aG9kTmFtZTtcblxuICAgICAgICAvLyBheGlvcy1tdWx0aXBhcnQg7LKY66asICjtjIzsnbwg7JeF66Gc65OcKVxuICAgICAgICBpZiAoY2xpZW50cy5pbmNsdWRlcyhcImF4aW9zLW11bHRpcGFydFwiKSkge1xuICAgICAgICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBhcGkudXBsb2FkT3B0aW9ucz8ubW9kZSA9PT0gXCJtdWx0aXBsZVwiO1xuICAgICAgICAgIGNvbnN0IGZpbGVQYXJhbU5hbWUgPSBpc011bHRpcGxlID8gXCJmaWxlc1wiIDogXCJmaWxlXCI7XG4gICAgICAgICAgY29uc3QgZmlsZVBhcmFtVHlwZSA9IGlzTXVsdGlwbGUgPyBcIkZpbGVbXVwiIDogXCJGaWxlXCI7XG5cbiAgICAgICAgICBjb25zdCBmb3JtRGF0YUFwcGVuZCA9IGlzTXVsdGlwbGVcbiAgICAgICAgICAgID8gYCR7ZmlsZVBhcmFtTmFtZX0uZm9yRWFjaChmID0+IHsgZm9ybURhdGEuYXBwZW5kKFwiJHtmaWxlUGFyYW1OYW1lfVwiLCBmKTsgfSk7YFxuICAgICAgICAgICAgOiBgZm9ybURhdGEuYXBwZW5kKFwiJHtmaWxlUGFyYW1OYW1lfVwiLCAke2ZpbGVQYXJhbU5hbWV9KTtgO1xuXG4gICAgICAgICAgY29uc3Qgb3RoZXJQYXJhbXNBcHBlbmQgPSBwYXJhbXNXaXRob3V0Q29udGV4dFxuICAgICAgICAgICAgLm1hcCgocGFyYW0pID0+IGBmb3JtRGF0YS5hcHBlbmQoJyR7cGFyYW0ubmFtZX0nLCBTdHJpbmcoJHtwYXJhbS5uYW1lfSkpO2ApXG4gICAgICAgICAgICAuam9pbihcIlxcbiAgICBcIik7XG5cbiAgICAgICAgICBjb25zdCBwYXJhbXNEZWZDb21tYSA9IHBhcmFtc0RlZiAhPT0gXCJcIiA/IFwiLCBcIiA6IFwiXCI7XG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBgXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gJHttZXRob2ROYW1lfSR7dHlwZVBhcmFtc0RlZn0oXG4gICR7cGFyYW1zRGVmfSR7cGFyYW1zRGVmQ29tbWF9XG4gICR7ZmlsZVBhcmFtTmFtZX06ICR7ZmlsZVBhcmFtVHlwZX0sXG4gIG9uVXBsb2FkUHJvZ3Jlc3M/OiAocGU6IEF4aW9zUHJvZ3Jlc3NFdmVudCkgPT4gdm9pZFxuKTogUHJvbWlzZTwke3JldHVyblR5cGVEZWZ9PiB7XG4gIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICR7Zm9ybURhdGFBcHBlbmR9XG4gICR7b3RoZXJQYXJhbXNBcHBlbmR9XG4gIHJldHVybiBmZXRjaCh7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgdXJsOiBcXGAke2FwaUJhc2VVcmx9XFxgLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiLFxuICAgIH0sXG4gICAgb25VcGxvYWRQcm9ncmVzcyxcbiAgICBkYXRhOiBmb3JtRGF0YSxcbiAgICAke2FwaS5vcHRpb25zLnRpbWVvdXQgPyBgc2lnbmFsOiBBYm9ydFNpZ25hbC50aW1lb3V0KCR7YXBpLm9wdGlvbnMudGltZW91dH0pLGAgOiBcIlwifVxuICB9KTtcbn1cbiAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGFwaS5vcHRpb25zLmh0dHBNZXRob2QgPT09IFwiR0VUXCIpIHtcbiAgICAgICAgICBjb25zdCBoYXNQYXJhbXMgPSBwYXJhbXNXaXRob3V0Q29udGV4dC5sZW5ndGggPiAwO1xuICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgYFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICR7bWV0aG9kTmFtZX0ke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSk6IFByb21pc2U8JHtyZXR1cm5UeXBlRGVmfT4ge1xuICByZXR1cm4gZmV0Y2goe1xuICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICB1cmw6IFxcYCR7YXBpQmFzZVVybH0ke2hhc1BhcmFtcyA/IGA/XFwke3FzLnN0cmluZ2lmeSh7ICR7cGFyYW1OYW1lc30gfSl9YCA6IFwiXCJ9XFxgLFxuICAgICR7YXBpLm9wdGlvbnMudGltZW91dCA/IGBzaWduYWw6IEFib3J0U2lnbmFsLnRpbWVvdXQoJHthcGkub3B0aW9ucy50aW1lb3V0fSksYCA6IFwiXCJ9XG4gIH0pO1xufVxuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaGFzUGFyYW1zID0gcGFyYW1zV2l0aG91dENvbnRleHQubGVuZ3RoID4gMDtcbiAgICAgICAgICBmdW5jdGlvbnMucHVzaChcbiAgICAgICAgICAgIGBcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiAke21ldGhvZE5hbWV9JHt0eXBlUGFyYW1zRGVmfSgke3BhcmFtc0RlZn0pOiBQcm9taXNlPCR7cmV0dXJuVHlwZURlZn0+IHtcbiAgcmV0dXJuIGZldGNoKHtcbiAgICBtZXRob2Q6IFwiJHthcGkub3B0aW9ucy5odHRwTWV0aG9kfVwiLFxuICAgIHVybDogXFxgJHthcGlCYXNlVXJsfVxcYCxcbiAgICAke2hhc1BhcmFtcyA/IGBkYXRhOiB7ICR7cGFyYW1OYW1lc30gfSxgIDogXCJcIn1cbiAgICAke2FwaS5vcHRpb25zLnRpbWVvdXQgPyBgc2lnbmFsOiBBYm9ydFNpZ25hbC50aW1lb3V0KCR7YXBpLm9wdGlvbnMudGltZW91dH0pLGAgOiBcIlwifVxuICB9KTtcbn1cbiAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gcXVlcnlPcHRpb25zICsgdXNlUXVlcnkgKHRhbnN0YWNrLXF1ZXJ5KVxuICAgICAgICBpZiAoY2xpZW50cy5pbmNsdWRlcyhcInRhbnN0YWNrLXF1ZXJ5XCIpKSB7XG4gICAgICAgICAgY29uc3QgaG9va05hbWUgPSBhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWVcbiAgICAgICAgICAgID8gaW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWUsIHRydWUpXG4gICAgICAgICAgICA6IGluZmxlY3Rpb24uY2FtZWxpemUoYXBpLm1ldGhvZE5hbWUsIHRydWUpO1xuXG4gICAgICAgICAgLy8gcXVlcnlPcHRpb25zXG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBgXG5leHBvcnQgY29uc3QgJHttZXRob2ROYW1lfVF1ZXJ5T3B0aW9ucyA9ICR7dHlwZVBhcmFtc0RlZn0oJHtwYXJhbXNEZWZ9KSA9PiBxdWVyeU9wdGlvbnMoe1xuICBxdWVyeUtleTogWycke21vZGVsTmFtZX0nLCAnJHttZXRob2ROYW1lfScke3BhcmFtTmFtZXMgPyBgLCAke3BhcmFtTmFtZXN9YCA6IFwiXCJ9XSxcbiAgcXVlcnlGbjogKCkgPT4gJHttZXRob2ROYW1lfSgke3BhcmFtTmFtZXN9KVxufSk7XG4gICAgICAgICAgYC50cmltKCksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIHVzZVF1ZXJ5IGhvb2tcbiAgICAgICAgICBmdW5jdGlvbnMucHVzaChcbiAgICAgICAgICAgIGBcbmV4cG9ydCBjb25zdCB1c2Uke2luZmxlY3Rpb24uY2FtZWxpemUoaG9va05hbWUpfSA9ICR7dHlwZVBhcmFtc0RlZn0oJHtwYXJhbXNEZWZ9JHtcbiAgICAgICAgICAgICAgcGFyYW1zRGVmID8gXCIsIFwiIDogXCJcIlxuICAgICAgICAgICAgfW9wdGlvbnM/OiB7IGVuYWJsZWQ/OiBib29sZWFuIH0pID0+XG4gIHVzZVF1ZXJ5KHtcbiAgICAuLi4ke21ldGhvZE5hbWV9UXVlcnlPcHRpb25zKCR7cGFyYW1OYW1lc30pLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG4gICAgICAgICAgYC50cmltKCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMuIHVzZU11dGF0aW9uICh0YW5zdGFjay1tdXRhdGlvbilcbiAgICAgICAgaWYgKGNsaWVudHMuaW5jbHVkZXMoXCJ0YW5zdGFjay1tdXRhdGlvblwiKSkge1xuICAgICAgICAgIGNvbnN0IGhvb2tOYW1lID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkubWV0aG9kTmFtZSk7XG4gICAgICAgICAgY29uc3QgbXV0YXRpb25QYXJhbVR5cGUgPVxuICAgICAgICAgICAgcGFyYW1zV2l0aG91dENvbnRleHQubGVuZ3RoID4gMFxuICAgICAgICAgICAgICA/IGB7ICR7cGFyYW1zV2l0aG91dENvbnRleHRcbiAgICAgICAgICAgICAgICAgIC5tYXAoKHApID0+IGAke3AubmFtZX06ICR7YXBpUGFyYW1UeXBlVG9Uc1R5cGUocC50eXBlLCBbXSl9YClcbiAgICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIil9IH1gXG4gICAgICAgICAgICAgIDogXCJ2b2lkXCI7XG4gICAgICAgICAgY29uc3QgbXV0YXRpb25QYXJhbU5hbWVzID1cbiAgICAgICAgICAgIHBhcmFtc1dpdGhvdXRDb250ZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyBwYXJhbXNXaXRob3V0Q29udGV4dC5tYXAoKHApID0+IGBwYXJhbXMuJHtwLm5hbWV9YCkuam9pbihcIiwgXCIpXG4gICAgICAgICAgICAgIDogXCJcIjtcblxuICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgYFxuZXhwb3J0IGNvbnN0IHVzZSR7aG9va05hbWV9TXV0YXRpb24gPSAke3R5cGVQYXJhbXNEZWZ9KCkgPT4gdXNlTXV0YXRpb24oe1xuICBtdXRhdGlvbkZuOiAocGFyYW1zOiAke211dGF0aW9uUGFyYW1UeXBlfSkgPT4gJHttZXRob2ROYW1lfSgke211dGF0aW9uUGFyYW1OYW1lc30pXG59KTtcbiAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5hbWVzcGFjZXMucHVzaChcbiAgICAgICAgYFxuZXhwb3J0IG5hbWVzcGFjZSAke21vZGVsTmFtZX1TZXJ2aWNlIHtcbiR7ZnVuY3Rpb25zLmpvaW4oXCJcXG5cXG5cIil9XG59XG4gICAgICBgLnRyaW0oKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aCgpLFxuICAgICAgYm9keTogbmFtZXNwYWNlcy5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogZGlmZih1bmlxdWUoaW1wb3J0S2V5cyksIFsuLi50eXBlUGFyYW1OYW1lcywgXCJMaXN0UmVzdWx0XCJdKSxcbiAgICAgIGN1c3RvbUhlYWRlcnM6IFtcbiAgICAgICAgXCIvKiogYmlvbWUtaWdub3JlLWFsbCBsaW50OiBnZW5lcmF0ZWTripQg66y07IucICovXCIsXG4gICAgICAgIFwiLyoqIGJpb21lLWlnbm9yZS1hbGwgYXNzaXN0OiBnZW5lcmF0ZWTripQg66y07IucICovXCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIGBpbXBvcnQgeyBxdWVyeU9wdGlvbnMsIHVzZVF1ZXJ5LCB1c2VNdXRhdGlvbiB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7YCxcbiAgICAgICAgYGltcG9ydCB0eXBlIHsgQXhpb3NQcm9ncmVzc0V2ZW50IH0gZnJvbSAnYXhpb3MnO2AsXG4gICAgICAgIGBpbXBvcnQgcXMgZnJvbSAncXMnO2AsXG4gICAgICAgIGBpbXBvcnQgeyB0eXBlIExpc3RSZXN1bHQsIGZldGNoLCB0eXBlIEV2ZW50SGFuZGxlcnMsIHR5cGUgU1NFU3RyZWFtT3B0aW9ucywgdXNlU1NFU3RyZWFtIH0gZnJvbSAnLi9zb25hbXUuc2hhcmVkJztgLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXSwibmFtZXMiOlsiaW5mbGVjdGlvbiIsImRpZmYiLCJ1bmlxdWUiLCJhcGlQYXJhbVRvVHNDb2RlIiwiYXBpUGFyYW1UeXBlVG9Uc1R5cGUiLCJ1bndyYXBQcm9taXNlT25jZSIsIlNvbmFtdSIsIkFwaVBhcmFtVHlwZSIsImFzc2VydERlZmluZWQiLCJUZW1wbGF0ZSIsInpvZFR5cGVUb1RzVHlwZURlZiIsIlRlbXBsYXRlX19zZXJ2aWNlcyIsImdldFRhcmdldEFuZFBhdGgiLCJ0YXJnZXQiLCJwYXRoIiwicmVuZGVyIiwiYXBpcyIsInN5bmNlciIsImFwaXNCeU1vZGVsIiwiTWFwIiwiYXBpIiwibW9kZWxOYW1lIiwicmVwbGFjZSIsImhhcyIsInNldCIsImdldCIsInB1c2giLCJpbXBvcnRLZXlzIiwibmFtZXNwYWNlcyIsInR5cGVQYXJhbU5hbWVzIiwibW9kZWxBcGlzIiwiZnVuY3Rpb25zIiwic3RyZWFtT3B0aW9ucyIsInBhcmFtc1dpdGhvdXRDb250ZXh0IiwicGFyYW1ldGVycyIsImZpbHRlciIsInBhcmFtIiwiaXNDb250ZXh0IiwidHlwZSIsImlzUmVmS25leCIsIm9wdGlvbmFsIiwibmFtZSIsInN0YXJ0c1dpdGgiLCJhcGlCYXNlVXJsIiwiY29uZmlnIiwicm91dGUiLCJwcmVmaXgiLCJtZXRob2ROYW1lU3RyZWFtIiwib3B0aW9ucyIsInJlc291cmNlTmFtZSIsImNhbWVsaXplIiwibWV0aG9kTmFtZSIsIm1ldGhvZE5hbWVTdHJlYW1DYW1lbGl6ZWQiLCJldmVudHNUeXBlRGVmIiwiZXZlbnRzIiwicGFyYW1zRGVmQXNPYmplY3QiLCJsZW5ndGgiLCJtYXAiLCJwIiwiam9pbiIsInRyaW0iLCJ0eXBlUGFyYW1ldGVyc0FzVHNUeXBlIiwidHlwZVBhcmFtZXRlcnMiLCJ0eXBlUGFyYW0iLCJ0eXBlUGFyYW1zRGVmIiwiY29uY2F0IiwidHAiLCJpZCIsInBhcmFtc0RlZiIsInBhcmFtTmFtZXMiLCJyZXR1cm5UeXBlRGVmIiwicmV0dXJuVHlwZSIsImNsaWVudHMiLCJpbmNsdWRlcyIsImlzTXVsdGlwbGUiLCJ1cGxvYWRPcHRpb25zIiwibW9kZSIsImZpbGVQYXJhbU5hbWUiLCJmaWxlUGFyYW1UeXBlIiwiZm9ybURhdGFBcHBlbmQiLCJvdGhlclBhcmFtc0FwcGVuZCIsInBhcmFtc0RlZkNvbW1hIiwidGltZW91dCIsImh0dHBNZXRob2QiLCJoYXNQYXJhbXMiLCJob29rTmFtZSIsIm11dGF0aW9uUGFyYW1UeXBlIiwibXV0YXRpb25QYXJhbU5hbWVzIiwiYm9keSIsImN1c3RvbUhlYWRlcnMiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLGdCQUFnQixhQUFhO0FBQ3BDLFNBQVNDLElBQUksRUFBRUMsTUFBTSxRQUFRLFVBQVU7QUFDdkMsU0FDRUMsZ0JBQWdCLEVBQ2hCQyxvQkFBb0IsRUFDcEJDLGlCQUFpQixRQUNaLCtCQUE0QjtBQUVuQyxTQUFTQyxNQUFNLFFBQVEsc0JBQW1CO0FBRTFDLFNBQVNDLFlBQVksUUFBUSx1QkFBb0I7QUFDakQsU0FBU0MsYUFBYSxRQUFRLHVCQUFvQjtBQUNsRCxTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFDdkMsU0FBU0Msa0JBQWtCLFFBQVEsc0JBQW1CO0FBRXRELE9BQU8sTUFBTUMsMkJBQTJCRjtJQUN0QyxhQUFjO1FBQ1osS0FBSyxDQUFDO0lBQ1I7SUFFQUcsbUJBQW1CO1FBQ2pCLE9BQU87WUFDTEMsUUFBUTtZQUNSQyxNQUFNLENBQUMscUJBQXFCLENBQUM7UUFDL0I7SUFDRjtJQUVBQyxPQUFPLEVBQStCLEVBQUU7UUFDdEMsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR1YsT0FBT1csTUFBTTtRQUU5QixXQUFXO1FBQ1gsTUFBTUMsY0FBYyxJQUFJQztRQUN4QixLQUFLLE1BQU1DLE9BQU9KLEtBQU07WUFDdEIsTUFBTUssWUFBWUQsSUFBSUMsU0FBUyxDQUFDQyxPQUFPLENBQUMsVUFBVSxJQUFJQSxPQUFPLENBQUMsVUFBVTtZQUN4RSxJQUFJLENBQUNKLFlBQVlLLEdBQUcsQ0FBQ0YsWUFBWTtnQkFDL0JILFlBQVlNLEdBQUcsQ0FBQ0gs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixture-manager.d.ts","sourceRoot":"","sources":["../../src/testing/fixture-manager.ts"],"names":[],"mappings":"AAKA,OAAa,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAKvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAQ1B,MAAM,gBAAgB,CAAC;AAGxB,sCAAsC;AACtC,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE;QACR,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KAC9B,CAAC;CACH;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,IAAI,CAAqB;IACjC,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAEhB;IACD,IAAI,GAAG,IAAI,IAAI,CAKd;IAED,OAAO,CAAC,IAAI,CAAqB;IACjC,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAEhB;IACD,IAAI,GAAG,IAAI,IAAI,CAKd;IACD,gBAAgB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAEzC,OAAO,CAAC,aAAa,CAAuB;IAG5C,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,eAAe,CAAoE;IAE3F,IAAI;IAuBE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM;IAK7C;;;MAGE;IACI,IAAI;IAsCV,OAAO,CAAC,cAAc,CAAqB;IACrC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IAwB7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"fixture-manager.d.ts","sourceRoot":"","sources":["../../src/testing/fixture-manager.ts"],"names":[],"mappings":"AAKA,OAAa,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAKvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAQ1B,MAAM,gBAAgB,CAAC;AAGxB,sCAAsC;AACtC,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE;QACR,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KAC9B,CAAC;CACH;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,IAAI,CAAqB;IACjC,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAEhB;IACD,IAAI,GAAG,IAAI,IAAI,CAKd;IAED,OAAO,CAAC,IAAI,CAAqB;IACjC,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAEhB;IACD,IAAI,GAAG,IAAI,IAAI,CAKd;IACD,gBAAgB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAEzC,OAAO,CAAC,aAAa,CAAuB;IAG5C,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,eAAe,CAAoE;IAE3F,IAAI;IAuBE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM;IAK7C;;;MAGE;IACI,IAAI;IAsCV,OAAO,CAAC,cAAc,CAAqB;IACrC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IAwB7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0EhF,OAAO;IAYP,WAAW,CACf,YAAY,EAAE,MAAM,cAAc,EAClC,YAAY,EAAE,MAAM,cAAc,EAClC,aAAa,EAAE,oBAAoB,EACnC,cAAc,CAAC,EAAE,qBAAqB;IA+ElC,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;KACjD,EACD,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,GAAG,CAAC,EAAE,IAAI,CAAC;KACZ,GACA,OAAO,CAAC,aAAa,EAAE,CAAC;IAoF3B;;;;OAIG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,cAAc,EAC5B,SAAS,EAAE,aAAa,EAAE,GACzB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA6HjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAoEvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,aAAa;YAeP,0BAA0B;YAgF1B,oBAAoB;YA6CpB,uBAAuB;IA8B/B,gBAAgB,CAAC,IAAI,EAAE,MAAM;CAepC;AAED,eAAO,MAAM,cAAc,qBAA4B,CAAC"}
|